{
  "openapi": "3.0.4",
  "info": {
    "title": "Bunny Shield API",
    "description": "Bunny.net API for Bunny Shield (WAF, DDoS, Rate Limiting, Bot Detection, Access Lists & API Guardian).",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.bunny.net"
    }
  ],
  "paths": {
    "/shield/shield-zone/{shieldZoneId}/access-lists": {
      "get": {
        "tags": [
          "Access Lists"
        ],
        "summary": "Get all Access Lists available for a Shield Zone",
        "operationId": "Get Access Lists",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone to which the Access Lists belong.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone to which the Access Lists belong.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AccessListsDetailsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessListsDetailsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccessListsDetailsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "post": {
        "tags": [
          "Access Lists"
        ],
        "summary": "Create a new Custom Access List associated with a Shield Zone",
        "operationId": "Create Custom Access List",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone to which the Custom Access List will be associated.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone to which the Custom Access List will be associated.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomAccessListRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomAccessListRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomAccessListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/access-lists/configurations/{id}": {
      "patch": {
        "tags": [
          "Access Lists"
        ],
        "summary": "Update Access List Configuration for a Shield Zone",
        "operationId": "Update Access List Configuration",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Access List Configuration to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Access List Configuration to update.",
              "format": "int64"
            }
          },
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone to which the Access List Configuration belongs.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone to which the Access List Configuration belongs.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccessListConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccessListConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateAccessListConfigurationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateAccessListConfigurationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/access-lists/{id}": {
      "get": {
        "tags": [
          "Access Lists"
        ],
        "summary": "Get the specified Custom Access List associated with a Shield Zone",
        "operationId": "Get Custom Access List",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Custom Access List to retrieve.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Custom Access List to retrieve.",
              "format": "int64"
            }
          },
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone to which the Custom Access List belongs.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone to which the Custom Access List belongs.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "Access Lists"
        ],
        "summary": "Update the specified Custom Access List associated with a Shield Zone",
        "operationId": "Update Custom Access List",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Custom Access List to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Custom Access List to update.",
              "format": "int64"
            }
          },
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone to which the Custom Access List belongs.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone to which the Custom Access List belongs.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomAccessListRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomAccessListRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomAccessListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomAccessListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "tags": [
          "Access Lists"
        ],
        "summary": "Delete the specified Custom Access List associated with a Shield Zone",
        "operationId": "Delete Custom Access List",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Custom Access List to delete.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Custom Access List to delete.",
              "format": "int64"
            }
          },
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone to which the Custom Access List belongs.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone to which the Custom Access List belongs.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/access-lists/enums": {
      "get": {
        "tags": [
          "Access Lists"
        ],
        "summary": "Get all Access Lists API enumeration types and their values",
        "operationId": "Get Access List Enums",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "description": "Represents a response with the list of enumeration types and their values exposed by the Access Lists API."
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "description": "Represents a response with the list of enumeration types and their values exposed by the Access Lists API."
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  },
                  "description": "Represents a response with the list of enumeration types and their values exposed by the Access Lists API."
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/api-guardian": {
      "get": {
        "tags": [
          "API Guardian"
        ],
        "summary": "Get the API Guardian configuration and endpoints.",
        "operationId": "Get API Guardian",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "API Guardian"
        ],
        "summary": "Update the API Guardian configuration (enabled, execution mode, body limit action)",
        "operationId": "Update API Guardian Configuration",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiGuardianConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiGuardianConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiGuardianConfigurationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianConfigurationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/api-guardian/endpoint/{endpointId}": {
      "patch": {
        "tags": [
          "API Guardian"
        ],
        "summary": "Update your API Guardian Endpoint configuration",
        "operationId": "Update API Guardian Endpoint",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "endpointId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiGuardianEndpointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiGuardianEndpointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiGuardianEndpointRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateApiGuardianEndpointResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/api-guardian/spec": {
      "post": {
        "tags": [
          "API Guardian"
        ],
        "summary": "Upload your OpenAPI specification",
        "operationId": "Upload OpenAPI Specification",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOpenApiSpecificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOpenApiSpecificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOpenApiSpecificationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "API Guardian"
        ],
        "summary": "Update your OpenAPI specification",
        "operationId": "Update OpenAPI Specification",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOpenApiSpecificationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOpenApiSpecificationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpsertOpenApiSpecificationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertOpenApiSpecificationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/api-guardian/enums": {
      "get": {
        "tags": [
          "API Guardian"
        ],
        "summary": "Get all API Guardian enumeration types and their values",
        "operationId": "Get API Guardian Enums",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/bot-categorization": {
      "get": {
        "tags": [
          "Bot Categorization"
        ],
        "summary": "List bots available for explicit allow/block configuration on this Shield Zone, grouped by category.",
        "operationId": "List Bot Categorizations",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotCategorizationListResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/bot-categorization/bots/{botId}": {
      "put": {
        "tags": [
          "Bot Categorization"
        ],
        "summary": "Set or clear the action applied to a categorised bot for this Shield Zone.",
        "operationId": "Set Bot Categorization Action",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "botId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategorizationConfigurationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/bot-categorization/categories/{category}": {
      "put": {
        "tags": [
          "Bot Categorization"
        ],
        "summary": "Set or clear the action applied to every bot in a category for this Shield Zone.",
        "operationId": "Set Bot Category Action",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "category",
            "in": "path",
            "description": "0 = None\n1 = SEO\n2 = AIScraper\n3 = AITool\n4 = Tool\n5 = Ads\n6 = Preview\n7 = Social\n255 = System",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/BotCategory"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotCategoryConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotCategoryConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotCategoryConfigurationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotCategoryConfigurationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/bot-detection": {
      "get": {
        "tags": [
          "Bot Detection"
        ],
        "summary": "Your current Bot Detection configuration",
        "operationId": "Get Current Bot Detection",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BotDetectionConfigurationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "Bot Detection"
        ],
        "summary": "Update your current Bot Detection configuration",
        "operationId": "Update Bot Detection",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotDetectionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotDetectionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBotDetectionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateBotDetectionResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/custom-page/{pageType}": {
      "put": {
        "tags": [
          "Custom Response Pages"
        ],
        "summary": "Upload a custom HTML response page for a Shield Zone",
        "operationId": "Upload Custom Response Page",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "get": {
        "tags": [
          "Custom Response Pages"
        ],
        "summary": "Get a custom HTML response page for a Shield Zone",
        "operationId": "Get Custom Response Page",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "tags": [
          "Custom Response Pages"
        ],
        "summary": "Delete a custom HTML response page for a Shield Zone",
        "operationId": "Delete Custom Response Page",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/ddos/enums": {
      "get": {
        "tags": [
          "DDoS"
        ],
        "summary": "List of all DDoS Enum Mappings",
        "operationId": "Get DDoS Enums",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEnumsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEnumsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEnumsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/event-logs/{shieldZoneId}/{date}/{continuationToken}": {
      "get": {
        "tags": [
          "Event Logs"
        ],
        "summary": "Get Event Logs for Shield Zone",
        "operationId": "Get Event Logs",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          },
          {
            "name": "date",
            "in": "path",
            "description": "The Date (MM-dd-yyyy) of returned Event Logs.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The Date (MM-dd-yyyy) of returned Event Logs."
            }
          },
          {
            "name": "continuationToken",
            "in": "path",
            "description": "The Continuation Token for the next page of Event Logs",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The Continuation Token for the next page of Event Logs"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WafLoggingResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WafLoggingResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WafLoggingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/event-logs/{shieldZoneId}/search": {
      "post": {
        "tags": [
          "Event Logs"
        ],
        "summary": "Search, filter and group Event Logs for a Shield Zone",
        "operationId": "Search Event Logs",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLogsSearchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLogsSearchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EventLogsSearchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/EventLogsSearchResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventLogsSearchResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventLogsSearchResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/event-logs/{shieldZoneId}/export": {
      "post": {
        "tags": [
          "Event Logs"
        ],
        "summary": "Export the full filtered Event Logs set for a Shield Zone as CSV",
        "operationId": "Export Event Logs",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLogsExportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EventLogsExportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EventLogsExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/csv": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/overages/{shieldZoneId}": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get the overage breakdown for the specified Shield Zone for a given month, segmented by billing plan changes",
        "operationId": "Get Shield Zone Monthly Overages",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          },
          {
            "name": "year",
            "in": "query",
            "description": "The calendar year to query.",
            "schema": {
              "type": "integer",
              "description": "The calendar year to query.",
              "format": "int32"
            }
          },
          {
            "name": "month",
            "in": "query",
            "description": "The calendar month (1-12) to query.",
            "schema": {
              "type": "integer",
              "description": "The calendar month (1-12) to query.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShieldZoneMonthlyOveragesResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShieldZoneMonthlyOveragesResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShieldZoneMonthlyOveragesResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/overview/{shieldZoneId}": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get an overview of metrics for the specified Shield Zone",
        "operationId": "Get Shield Zone Metrics Overview",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneMetricsOverviewResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneMetricsOverviewResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneMetricsOverviewResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/overview/{shieldZoneId}/detailed": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get a detailed metrics overview for the specified Shield Zone within the selected time range and resolution",
        "operationId": "Get Shield Zone Detailed Metrics Overview",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          },
          {
            "name": "StartDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "EndDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Resolution",
            "in": "query",
            "description": "0 = Auto\n1 = TwoMinutes\n2 = TenMinutes\n3 = Hourly\n4 = Daily\n5 = Weekly\n6 = Monthly",
            "schema": {
              "$ref": "#/components/schemas/MetricsOverviewResolution"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShieldOverviewMetrics"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShieldOverviewMetrics"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShieldOverviewMetrics"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/rate-limits/{shieldZoneId}": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get aggregated rate limit metrics for the specified Shield Zone",
        "operationId": "Get Shield Zone Rate Limit Metrics",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneRatelimitMetricsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneRatelimitMetricsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneRatelimitMetricsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/rate-limit/{id}": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get detailed metrics for the specified Rate Limit",
        "operationId": "Get Rate Limit Metrics",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Rate limit.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Rate limit.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetRatelimitMetricsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRatelimitMetricsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRatelimitMetricsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/shield-zone/{shieldZoneId}/waf-rule/{ruleId}": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get metrics for a specific WAF Rule within the specified Shield Zone",
        "operationId": "Get WAF Rule Metrics",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          },
          {
            "name": "ruleId",
            "in": "path",
            "description": "The ID of the WAF Rule.",
            "required": true,
            "schema": {
              "pattern": "^[A-Za-z0-9_-]{1,64}$",
              "type": "string",
              "description": "The ID of the WAF Rule."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafRuleMetricsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafRuleMetricsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafRuleMetricsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/shield-zone/{shieldZoneId}/bot-detection": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get bot detection metrics for the specified Shield Zone",
        "operationId": "Get Shield Zone Bot Detection Metrics",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneBotDetectionMetricsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneBotDetectionMetricsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneBotDetectionMetricsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/shield-zone/{shieldZoneId}/upload-scanning": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get upload scanning metrics for the specified Shield Zone",
        "operationId": "Get Shield Zone Upload Scanning Metrics",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneUploadScanningMetricsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneUploadScanningMetricsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneUploadScanningMetricsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/shield-zone/{shieldZoneId}/api-guardian": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get API Guardian metrics for the specified Shield Zone",
        "operationId": "Get Shield Zone API Guardian Metrics",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianMetricsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianMetricsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianMetricsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/metrics/shield-zone/{shieldZoneId}/api-guardian/endpoint/{endpointId}": {
      "get": {
        "tags": [
          "Metrics"
        ],
        "summary": "Get metrics for a specific API Guardian endpoint within the specified Shield Zone",
        "operationId": "Get API Guardian Endpoint Metrics",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          },
          {
            "name": "endpointId",
            "in": "path",
            "description": "The ID of the API Guardian Endpoint.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the API Guardian Endpoint.",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianEndpointMetricsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianEndpointMetricsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApiGuardianEndpointMetricsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/promo/state": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "Get the current Promotion State for your Account",
        "operationId": "Get Promotion State",
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/shield/rate-limits/{shieldZoneId}": {
      "get": {
        "tags": [
          "Rate Limiting"
        ],
        "summary": "Get Rate Limits for your Shield Zone",
        "operationId": "Get Rate Limits",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone associated with the Rate Limits",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone associated with the Rate Limits",
              "format": "int64"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "(Optional) The page number of results.",
            "schema": {
              "type": "integer",
              "description": "(Optional) The page number of results.",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "(Optional) (Default: 10) The amount of results returned on one page.",
            "schema": {
              "type": "integer",
              "description": "(Optional) (Default: 10) The amount of results returned on one page.",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomWafRulesResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomWafRulesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomWafRulesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/rate-limit/{id}": {
      "get": {
        "tags": [
          "Rate Limiting"
        ],
        "summary": "Get Individual Rate Limit for your Shield Zone",
        "operationId": "Get Rate Limit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Rate Limit",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Rate Limit",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "Rate Limiting"
        ],
        "summary": "Update a Rate Limit configuration on your Shield Zone",
        "operationId": "Update Rate Limit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Rate Limit you would like to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Rate Limit you would like to update.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWafRateLimitRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWafRateLimitRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWafRateLimitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitRule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitRule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitRule"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "tags": [
          "Rate Limiting"
        ],
        "summary": "Delete a Rate Limit on your Shield Zone",
        "operationId": "Delete Rate Limit",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Rate Limit that should be deleted.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Rate Limit that should be deleted.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/rate-limit": {
      "post": {
        "tags": [
          "Rate Limiting"
        ],
        "summary": "Create a Rate Limit for your Shield Zone",
        "operationId": "Create Rate Limit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWafRateLimitRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWafRateLimitRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWafRateLimitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitRule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitRule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitRule"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zones": {
      "get": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Get all of your Shield Zone Configurations",
        "operationId": "Get Shield Zone Configurations",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "(Optional) The page number of results.",
            "schema": {
              "type": "integer",
              "description": "(Optional) The page number of results.",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "(Optional) (Default: 10) The amount of results returned on one page.",
            "schema": {
              "type": "integer",
              "description": "(Optional) (Default: 10) The amount of results returned on one page.",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZonesResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZonesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZonesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zones/pullzone-mapping": {
      "get": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Get Active Shield Zones for Pullzone Mapping",
        "operationId": "Get Shield Zones Pull Zone Mapping",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZonePullzoneMappingResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZonePullzoneMappingResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZonePullzoneMappingResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}": {
      "get": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Get Singular Shield Zone Configuration",
        "operationId": "Get Shield Zone Configuration",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/get-by-pullzone/{pullZoneId}": {
      "get": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Get Singular Shield Zone Configuration for PullZone",
        "operationId": "Get Shield Zone Configuration by Pull Zone",
        "parameters": [
          {
            "name": "pullZoneId",
            "in": "path",
            "description": "The ID of the PullZone.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the PullZone.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/defaults": {
      "get": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Get the recommended defaults for creating a Shield Zone",
        "operationId": "Get Shield Zone Defaults",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneDefaultsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneDefaultsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetShieldZoneDefaultsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/under-attack": {
      "post": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Create a Shield Zone in under-attack mode for your PullZone",
        "operationId": "Create Shield Zone Under Attack",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUnderAttackShieldZoneRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUnderAttackShieldZoneRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUnderAttackShieldZoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone": {
      "post": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Create a Shield Zone for your PullZone",
        "operationId": "Create Shield Zone",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShieldZoneRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShieldZoneRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateShieldZoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "Shield Zone"
        ],
        "summary": "Update your Shield Zone configuration",
        "operationId": "Update Shield Zone",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShieldZoneRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShieldZoneRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateShieldZoneRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateShieldZoneResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateShieldZoneResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/shield-zone/{shieldZoneId}/upload-scanning": {
      "get": {
        "tags": [
          "Upload Scanning"
        ],
        "summary": "Get your Current Upload Scanning Configuration",
        "operationId": "Get Upload Scanning",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadScanningConfigurationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "Upload Scanning"
        ],
        "summary": "Update your Upload Scanning Configuration",
        "operationId": "Update Upload Scanning",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUploadScanningConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUploadScanningConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUploadScanningConfigurationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateUploadScanningConfigurationResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/rules/{shieldZoneId}": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve all available WAF rules for a Shield Zone",
        "operationId": "Get WAF Rules",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone for the WAF Rules.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone for the WAF Rules.",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WafRuleMainGroupModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WafRuleMainGroupModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WafRuleMainGroupModel"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/rules/plan-segmentation": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve WAF rules segmented by subscription plan",
        "operationId": "Get WAF Rules by Plan",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafRulesSegmentedByPlanResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafRulesSegmentedByPlanResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafRulesSegmentedByPlanResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/rules/review-triggered/{shieldZoneId}": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Review all triggered WAF rules for the specified Shield Zone",
        "operationId": "Get Triggered WAF Rules",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone for the Triggered Rules.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone for the Triggered Rules.",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetTriggeredRulesResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTriggeredRulesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTriggeredRulesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "post": {
        "tags": [
          "WAF"
        ],
        "summary": "Review and update the action of a triggered WAF rule",
        "operationId": "Update Triggered WAF Rule",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone for the Triggered Rule.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone for the Triggered Rule.",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReviewTriggeredRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReviewTriggeredRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateReviewTriggeredRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateReviewTriggeredRuleResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateReviewTriggeredRuleResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateReviewTriggeredRuleResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/rules/review-triggered/ai-recommendation/{shieldZoneId}/{ruleId}": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve an AI recommendation for a triggered WAF rule",
        "operationId": "Get Triggered Rule AI Recommendation",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone for the Triggered Rule.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone for the Triggered Rule.",
              "format": "int64"
            }
          },
          {
            "name": "ruleId",
            "in": "path",
            "description": "The ID of the Triggered Rule.",
            "required": true,
            "schema": {
              "type": "string",
              "description": "The ID of the Triggered Rule."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TriggeredRuleRecommendationResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TriggeredRuleRecommendationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TriggeredRuleRecommendationResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/custom-rules/{shieldZoneId}": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve custom WAF rules configured for the specified Shield Zone",
        "operationId": "Get Custom WAF Rules",
        "parameters": [
          {
            "name": "shieldZoneId",
            "in": "path",
            "description": "The ID of the Shield Zone associated with the Custom WAF Rules.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Shield Zone associated with the Custom WAF Rules.",
              "format": "int64"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "(Optional) The page number of results.",
            "schema": {
              "type": "integer",
              "description": "(Optional) The page number of results.",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "perPage",
            "in": "query",
            "description": "(Optional) (Default: 10) The amount of results returned on one page.",
            "schema": {
              "type": "integer",
              "description": "(Optional) (Default: 10) The amount of results returned on one page.",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomWafRulesResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomWafRulesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomWafRulesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/custom-rule/{id}": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve a specific custom WAF rule",
        "operationId": "Get Custom WAF Rule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Custom WAF Rule.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Custom WAF Rule.",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "put": {
        "tags": [
          "WAF"
        ],
        "summary": "Update an existing custom WAF rule",
        "operationId": "Update Custom WAF Rule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Custom WAF Rule you would like to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Custom WAF Rule you would like to update.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomWafRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomWafRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomWafRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "WAF"
        ],
        "summary": "Update an existing custom WAF rule",
        "operationId": "Update Custom WAF Rule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Custom WAF Rule you would like to update.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Custom WAF Rule you would like to update.",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomWafRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomWafRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomWafRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "tags": [
          "WAF"
        ],
        "summary": "Delete a custom WAF rule",
        "operationId": "Delete Custom WAF Rule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the Custom WAF Rule that should be deleted.",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "The ID of the Custom WAF Rule that should be deleted.",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericRequestResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/custom-rule": {
      "post": {
        "tags": [
          "WAF"
        ],
        "summary": "Create a new custom WAF rule",
        "operationId": "Create Custom WAF Rule",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomWafRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomWafRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomWafRuleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomWafRule"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/profiles": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve all available WAF profiles",
        "operationId": "List WAF Profiles",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafProfilesResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafProfilesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafProfilesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/enums": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve all available WAF enum mappings",
        "operationId": "Get WAF Enum Mappings",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEnumsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEnumsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEnumsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/shield/waf/engine-config": {
      "get": {
        "tags": [
          "WAF"
        ],
        "summary": "Retrieve the default WAF engine configuration",
        "operationId": "Get WAF Engine Configuration",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEngineConfigResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEngineConfigResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetWafEngineConfigResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedResult"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptedResult": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true
          },
          "formatters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IOutputFormatter"
            },
            "nullable": true
          },
          "contentTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "declaredType": {
            "type": "string",
            "nullable": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AccessList": {
        "type": "object",
        "properties": {
          "totalActions": {
            "type": "integer",
            "format": "int32"
          },
          "blockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "challengedRequests": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "AccessListAction": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ],
        "type": "integer",
        "description": "0 = None\n1 = Allow\n2 = Block\n3 = Challenge\n4 = Log\n5 = Bypass",
        "format": "int32",
        "x-enum-varnames": [
          "None",
          "Allow",
          "Block",
          "Challenge",
          "Log",
          "Bypass"
        ]
      },
      "AccessListCategory": {
        "enum": [
          0,
          1,
          2,
          4,
          8,
          16,
          32,
          64,
          128,
          256,
          512,
          1024,
          2048,
          4096,
          8192
        ],
        "type": "integer",
        "description": "0 = None\n1 = VPNs\n2 = Datacenters\n4 = Proxies\n8 = TorExitNodes\n16 = Botnets\n32 = VulnerabilityScanners\n64 = WebScrapers\n128 = SearchEngines\n256 = SearchEngineCrawlers\n512 = AiSearch\n1024 = AiCrawlers\n2048 = AiAgents\n4096 = PagePreview\n8192 = InternetTools",
        "format": "int32",
        "x-enum-varnames": [
          "None",
          "VPNs",
          "Datacenters",
          "Proxies",
          "TorExitNodes",
          "Botnets",
          "VulnerabilityScanners",
          "WebScrapers",
          "SearchEngines",
          "SearchEngineCrawlers",
          "AiSearch",
          "AiCrawlers",
          "AiAgents",
          "PagePreview",
          "InternetTools"
        ]
      },
      "AccessListDetails": {
        "required": [
          "action",
          "configurationId",
          "entryCount",
          "isEnabled",
          "lastUpdated",
          "listId",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "listId": {
            "type": "integer",
            "description": "The unique identifier of the access list.",
            "format": "int64"
          },
          "configurationId": {
            "type": "integer",
            "description": "The unique identifier of the access list configuration.",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "The display name of the access list.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Optional description of the access list's purpose or contents.",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates whether the access list is currently enabled and active."
          },
          "type": {
            "$ref": "#/components/schemas/AccessListType"
          },
          "category": {
            "$ref": "#/components/schemas/AccessListCategory"
          },
          "action": {
            "$ref": "#/components/schemas/AccessListAction"
          },
          "requiredPlan": {
            "$ref": "#/components/schemas/ShieldPlanType"
          },
          "entryCount": {
            "type": "integer",
            "description": "The total number of entries currently in the access list.",
            "format": "int64"
          },
          "updateFrequency": {
            "type": "string",
            "description": "How frequently the list is updated from its source. Only applicable to managed lists.",
            "format": "date-span",
            "nullable": true
          },
          "lastUpdated": {
            "type": "string",
            "description": "The timestamp when the access list was last updated.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents detailed information about an access list and its configuration."
      },
      "AccessListType": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ],
        "type": "integer",
        "description": "0 = IP\n1 = CIDR\n2 = ASN\n3 = Country\n4 = Organization\n5 = JA4",
        "format": "int32",
        "x-enum-varnames": [
          "IP",
          "CIDR",
          "ASN",
          "Country",
          "Organization",
          "JA4"
        ]
      },
      "AccessListsDetailsResponse": {
        "type": "object",
        "properties": {
          "managedLists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccessListDetails"
            },
            "description": "List of curated threat lists maintained by Bunny Shield with automatic updates.",
            "nullable": true
          },
          "customLists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccessListDetails"
            },
            "description": "List of custom access lists created and maintained by the user.",
            "nullable": true
          },
          "customEntryCount": {
            "type": "integer",
            "description": "Total number of entries across all custom access lists for this Shield Zone.",
            "format": "int32",
            "nullable": true
          },
          "customEntryLimit": {
            "type": "integer",
            "description": "Maximum number of entries allowed across all custom access lists based on the Shield plan.",
            "format": "int32",
            "nullable": true
          },
          "customListCount": {
            "type": "integer",
            "description": "Current number of custom access lists for this Shield Zone.",
            "format": "int32",
            "nullable": true
          },
          "customListLimit": {
            "type": "integer",
            "description": "Maximum number of custom access lists allowed based on the Shield plan.",
            "format": "int32",
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false,
        "description": "Response containing comprehensive access list information for a Shield Zone, including both managed and custom lists."
      },
      "ApiGuardianConfigurationDetails": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Whether API Guardian is enabled for this shield zone. When disabled, no requests are inspected."
          },
          "executionMode": {
            "$ref": "#/components/schemas/WAFExecutionMode"
          },
          "bodyLimitAction": {
            "$ref": "#/components/schemas/WAFPayloadLimitAction"
          },
          "unmatchedPathAction": {
            "$ref": "#/components/schemas/UnmatchedPathAction"
          },
          "title": {
            "type": "string",
            "description": "The `info.title` field from the uploaded OpenAPI specification.",
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "The `info.version` field from the uploaded OpenAPI specification.",
            "nullable": true
          },
          "maxEndpoints": {
            "type": "integer",
            "description": "Plan limit: maximum number of endpoints that can be defined in the specification.",
            "format": "int32"
          },
          "maxFieldsPerType": {
            "type": "integer",
            "description": "Plan limit: maximum number of properties a single schema object may declare.",
            "format": "int32"
          },
          "maxNestingDepth": {
            "type": "integer",
            "description": "Plan limit: maximum depth of nested `$ref`, `items`, and `properties` chains.",
            "format": "int32"
          },
          "maxTotalSchemaNodes": {
            "type": "integer",
            "description": "Plan limit: combined node count across all `components/schemas` entries.",
            "format": "int32"
          },
          "maxTotalRegexLength": {
            "type": "integer",
            "description": "Plan limit: combined character length of all `pattern` regex strings in the specification.",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Global API Guardian configuration for a shield zone."
      },
      "ApiGuardianConfigurationResponse": {
        "required": [
          "configuration",
          "endpoints"
        ],
        "type": "object",
        "properties": {
          "configuration": {
            "$ref": "#/components/schemas/ApiGuardianConfigurationDetails"
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiGuardianEndpointDetails"
            },
            "description": "All endpoints discovered from the uploaded OpenAPI specification.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The full API Guardian state for a shield zone: global configuration and all endpoints."
      },
      "ApiGuardianEndpointActivity": {
        "type": "object",
        "properties": {
          "blockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "rateLimited": {
            "type": "integer",
            "format": "int32"
          },
          "requestsInspected": {
            "type": "integer",
            "format": "int32"
          },
          "failedRequestValidation": {
            "type": "integer",
            "format": "int32"
          },
          "failedAuthenticationEnforcement": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ApiGuardianEndpointDetails": {
        "type": "object",
        "properties": {
          "apiGuardianEndpointId": {
            "type": "integer",
            "format": "int64"
          },
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "requestMethod": {
            "type": "string",
            "description": "The HTTP method (e.g. \"GET\", \"POST\").",
            "nullable": true
          },
          "requestPath": {
            "type": "string",
            "description": "The OAS path template (e.g. \"/pets/{petId}\").",
            "nullable": true
          },
          "validateRequestBodySchema": {
            "type": "boolean",
            "description": "Whether inbound request bodies are validated against the OAS request body schema."
          },
          "validateResponseBodySchema": {
            "type": "boolean",
            "description": "Whether outbound response bodies are validated against the OAS response schema."
          },
          "validateAuthorization": {
            "type": "boolean",
            "description": "Whether authentication credentials are enforced."
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Whether this endpoint is active. Disabled endpoints are not enforced."
          },
          "authSchemes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuthSchemeDetails"
            },
            "description": "Authentication schemes required by this endpoint, derived from the OAS security requirements.\nNull when the endpoint has no security requirements.",
            "nullable": true
          },
          "requestBodySchemaYaml": {
            "type": "string",
            "description": "The request body schema rendered as YAML for display purposes. Null if no request body is defined.",
            "nullable": true
          },
          "responseBodySchemasYaml": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Response body schemas keyed by HTTP status code, rendered as YAML. Null if no response schemas are defined.",
            "nullable": true
          },
          "availableParameters": {
            "type": "object",
            "properties": {
              "Path": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Query": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Header": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Cookie": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false,
            "description": "All parameters defined in the OAS operation, grouped by location (path, query, header, cookie).",
            "nullable": true
          },
          "injectionDetectionParameters": {
            "type": "object",
            "properties": {
              "Path": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Query": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Header": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Cookie": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false,
            "description": "Parameters selected for XSS/SQLi injection detection, grouped by location.\nNull if not configured. Subset of BunnyNet.Shield.Api.Services.Shield.ApiGuardian.Models.ApiGuardianEndpointDetails.AvailableParameters.",
            "nullable": true
          },
          "detectParameterXss": {
            "type": "boolean",
            "description": "Whether XSS detection is enabled for the selected parameters."
          },
          "detectParameterSqli": {
            "type": "boolean",
            "description": "Whether SQL injection detection is enabled for the selected parameters."
          },
          "rateLimitingEnabled": {
            "type": "boolean",
            "description": "Whether per-endpoint rate limiting is active."
          },
          "rateLimitingType": {
            "$ref": "#/components/schemas/ApiGuardianRateLimitType"
          },
          "rateLimitingRequestCount": {
            "type": "integer",
            "description": "Maximum number of requests allowed within the rate limiting timeframe before blocking.",
            "format": "int32"
          },
          "rateLimitingTimeframe": {
            "$ref": "#/components/schemas/RateLimitTimeframe"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Detailed view of a single API Guardian endpoint, including its validation settings,\nauthentication requirements, and rate limiting configuration."
      },
      "ApiGuardianEndpointMetrics": {
        "type": "object",
        "properties": {
          "totalBlockedRequests": {
            "type": "integer",
            "format": "int64"
          },
          "totalLoggedRequests": {
            "type": "integer",
            "format": "int64"
          },
          "totalRateLimited": {
            "type": "integer",
            "format": "int64"
          },
          "totalRequestsInspected": {
            "type": "integer",
            "format": "int64"
          },
          "totalFailedRequestValidation": {
            "type": "integer",
            "format": "int64"
          },
          "totalFailedAuthenticationEnforcement": {
            "type": "integer",
            "format": "int64"
          },
          "overviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ApiGuardianEndpointActivity"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApiGuardianMetrics": {
        "type": "object",
        "properties": {
          "totalBlockedRequests": {
            "type": "integer",
            "format": "int64"
          },
          "totalLoggedRequests": {
            "type": "integer",
            "format": "int64"
          },
          "totalRateLimited": {
            "type": "integer",
            "format": "int64"
          },
          "totalRequestsInspected": {
            "type": "integer",
            "format": "int64"
          },
          "totalFailedRequestValidation": {
            "type": "integer",
            "format": "int64"
          },
          "totalFailedAuthenticationEnforcement": {
            "type": "integer",
            "format": "int64"
          },
          "overviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ApiGuardianEndpointActivity"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApiGuardianRateLimitType": {
        "enum": [
          "Global",
          "IP"
        ],
        "type": "string"
      },
      "AuthLocation": {
        "enum": [
          "Header",
          "Query",
          "Cookie"
        ],
        "type": "string",
        "description": "Where an authentication credential is transmitted in the HTTP request."
      },
      "AuthSchemeDetails": {
        "type": "object",
        "properties": {
          "schemeName": {
            "type": "string",
            "description": "The OpenAPI security scheme reference name (e.g. \"bearerAuth\", \"apiKey\").",
            "nullable": true
          },
          "schemeType": {
            "$ref": "#/components/schemas/AuthSchemeType"
          },
          "location": {
            "$ref": "#/components/schemas/AuthLocation"
          },
          "credentialName": {
            "type": "string",
            "description": "The name of the header, query parameter, or cookie that carries the credential\n(e.g. \"Authorization\", \"X-API-Key\").",
            "nullable": true
          },
          "httpScheme": {
            "type": "string",
            "description": "For HTTP auth schemes, the scheme name (e.g. \"bearer\", \"basic\"). Null for non-HTTP schemes.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Describes a single authentication scheme required by an endpoint,\nas extracted from the OpenAPI specification's securitySchemes."
      },
      "AuthSchemeType": {
        "enum": [
          "ApiKey",
          "Http",
          "OAuth2",
          "OpenIdConnect"
        ],
        "type": "string",
        "description": "The type of security scheme as defined in the OpenAPI specification."
      },
      "BotCategorizationAction": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "description": "0 = None\n1 = Block\n2 = Allow\n3 = Ignore",
        "format": "int32",
        "x-enum-varnames": [
          "None",
          "Block",
          "Allow",
          "Ignore"
        ]
      },
      "BotCategorizationDetails": {
        "required": [
          "action",
          "botId",
          "category",
          "isVerifiable",
          "userAgentMatch"
        ],
        "type": "object",
        "properties": {
          "botId": {
            "type": "integer",
            "format": "int32"
          },
          "userAgentMatch": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/BotCategory"
          },
          "action": {
            "$ref": "#/components/schemas/BotCategorizationAction"
          },
          "isVerifiable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "BotCategorizationGroup": {
        "required": [
          "bots",
          "category",
          "categoryAction"
        ],
        "type": "object",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/BotCategory"
          },
          "categoryAction": {
            "$ref": "#/components/schemas/BotCategoryAction"
          },
          "bots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BotCategorizationDetails"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BotCategorizationListResponse": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BotCategorizationGroup"
            },
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "BotCategory": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7
        ],
        "type": "integer",
        "description": "0 = None\n1 = SEO\n2 = AIScraper\n3 = AITool\n4 = Tool\n5 = Ads\n6 = Preview\n7 = Social\n255 = System",
        "format": "int32",
        "x-enum-varnames": [
          "None",
          "SEO",
          "AIScraper",
          "AITool",
          "Tool",
          "Ads",
          "Preview",
          "Social",
          "System"
        ]
      },
      "BotCategoryAction": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "0 = None\n1 = Block\n2 = Allow",
        "format": "int32",
        "x-enum-varnames": [
          "None",
          "Block",
          "Allow"
        ]
      },
      "BotCategoryDetails": {
        "required": [
          "action",
          "category"
        ],
        "type": "object",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/BotCategory"
          },
          "action": {
            "$ref": "#/components/schemas/BotCategoryAction"
          }
        },
        "additionalProperties": false
      },
      "BotDetectionConfigurationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BotDetectionConfigurationState"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "BotDetectionConfigurationState": {
        "required": [
          "browserFingerprint",
          "ipAddress",
          "requestIntegrity"
        ],
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "requestIntegrity": {
            "$ref": "#/components/schemas/RequestIntegrityConfiguration"
          },
          "ipAddress": {
            "$ref": "#/components/schemas/IpAddressConfiguration"
          },
          "browserFingerprint": {
            "$ref": "#/components/schemas/BrowserFingerprintConfiguration"
          },
          "executionMode": {
            "$ref": "#/components/schemas/BotDetectionExecutionMode"
          }
        },
        "additionalProperties": false
      },
      "BotDetectionData": {
        "type": "object",
        "properties": {
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "challengedRequests": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "BotDetectionExecutionMode": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "description": "0 = LogOnly\n1 = Challenge",
        "format": "int32",
        "x-enum-varnames": [
          "LogOnly",
          "Challenge"
        ]
      },
      "BotDetectionSensitivity": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "description": "0 = Off\n1 = Low\n2 = Medium\n3 = High",
        "format": "int32",
        "x-enum-varnames": [
          "Off",
          "Low",
          "Medium",
          "High"
        ]
      },
      "BrowserFingerprintAggression": {
        "enum": [
          0,
          1,
          2,
          3,
          4
        ],
        "type": "integer",
        "description": "0 = Unknown\n1 = Low\n2 = Medium\n3 = High\n4 = Custom",
        "format": "int32",
        "x-enum-varnames": [
          "Unknown",
          "Low",
          "Medium",
          "High",
          "Custom"
        ]
      },
      "BrowserFingerprintConfiguration": {
        "type": "object",
        "properties": {
          "sensitivity": {
            "$ref": "#/components/schemas/BotDetectionSensitivity"
          },
          "aggression": {
            "$ref": "#/components/schemas/BrowserFingerprintAggression"
          },
          "complexEnabled": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ConfigVariableValueMinimal": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "valueEncoded": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateCustomAccessListRequest": {
        "required": [
          "content",
          "name",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The display name for the new access list.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Optional description of the access list's purpose or contents.",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/AccessListType"
          },
          "content": {
            "type": "string",
            "description": "The initial content for the access list with entries separated by newlines.",
            "nullable": true
          },
          "checksum": {
            "type": "string",
            "description": "SHA-256 checksum of the content for integrity verification. If null, it will be automatically calculated.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new custom access list."
      },
      "CreateCustomWafRuleModel": {
        "type": "object",
        "properties": {
          "actionType": {
            "$ref": "#/components/schemas/WafRuleActionType"
          },
          "variableTypes": {
            "type": "object",
            "properties": {
              "REQUEST_URI": {
                "type": "string"
              },
              "REQUEST_URI_RAW": {
                "type": "string"
              },
              "ARGS": {
                "type": "string"
              },
              "ARGS_COMBINED_SIZE": {
                "type": "string"
              },
              "ARGS_GET": {
                "type": "string"
              },
              "ARGS_GET_NAMES": {
                "type": "string"
              },
              "ARGS_POST": {
                "type": "string"
              },
              "ARGS_POST_NAMES": {
                "type": "string"
              },
              "FILES_NAMES": {
                "type": "string"
              },
              "GEO": {
                "type": "string"
              },
              "REMOTE_ADDR": {
                "type": "string"
              },
              "QUERY_STRING": {
                "type": "string"
              },
              "REQUEST_BASENAME": {
                "type": "string"
              },
              "REQUEST_BODY": {
                "type": "string"
              },
              "REQUEST_COOKIES_NAMES": {
                "type": "string"
              },
              "REQUEST_COOKIES": {
                "type": "string"
              },
              "REQUEST_FILENAME": {
                "type": "string"
              },
              "REQUEST_HEADERS_NAMES": {
                "type": "string"
              },
              "REQUEST_HEADERS": {
                "type": "string"
              },
              "REQUEST_LINE": {
                "type": "string"
              },
              "REQUEST_METHOD": {
                "type": "string"
              },
              "REQUEST_PROTOCOL": {
                "type": "string"
              },
              "RESPONSE_BODY": {
                "type": "string"
              },
              "RESPONSE_HEADERS": {
                "type": "string"
              },
              "RESPONSE_STATUS": {
                "type": "string"
              },
              "FINGERPRINT": {
                "type": "string"
              },
              "VERIFIED_BOT_CATEGORY": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "operatorType": {
            "$ref": "#/components/schemas/WafRuleOperatorType"
          },
          "severityType": {
            "$ref": "#/components/schemas/WafRuleSeverityType"
          },
          "transformationTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafRuleTransformationType"
            },
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "isNegated": {
            "type": "boolean",
            "nullable": true
          },
          "isRegexVariable": {
            "type": "boolean",
            "nullable": true
          },
          "chainedRuleConditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafChainedRuleConditionItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateCustomWafRuleRequest": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "ruleDescription": {
            "type": "string",
            "nullable": true
          },
          "ruleConfiguration": {
            "$ref": "#/components/schemas/CreateCustomWafRuleModel"
          }
        },
        "additionalProperties": false
      },
      "CreateShieldZoneRequest": {
        "required": [
          "pullZoneId"
        ],
        "type": "object",
        "properties": {
          "shieldZone": {
            "$ref": "#/components/schemas/ShieldZoneRequest"
          },
          "pullZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "accessLists": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AccessListAction"
            },
            "nullable": true
          },
          "botDetectionExecutionMode": {
            "$ref": "#/components/schemas/BotDetectionExecutionMode"
          },
          "csamScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          },
          "antivirusScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          }
        },
        "additionalProperties": false,
        "description": "Represents a request to create a new Shield Zone."
      },
      "CreateShieldZoneResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CreateShieldZoneRequest"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false,
        "description": "Response object for creating a new Shield Zone."
      },
      "CreateUnderAttackShieldZoneRequest": {
        "required": [
          "planType",
          "pullZoneId"
        ],
        "type": "object",
        "properties": {
          "pullZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "planType": {
            "$ref": "#/components/schemas/ShieldPlanType"
          }
        },
        "additionalProperties": false
      },
      "CreateWafRateLimitRequest": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "ruleDescription": {
            "type": "string",
            "nullable": true
          },
          "ruleConfiguration": {
            "$ref": "#/components/schemas/CreateWafRateLimitRuleModel"
          }
        },
        "additionalProperties": false
      },
      "CreateWafRateLimitRuleModel": {
        "type": "object",
        "properties": {
          "actionType": {
            "$ref": "#/components/schemas/RatelimitRuleActionType"
          },
          "variableTypes": {
            "type": "object",
            "properties": {
              "REQUEST_URI": {
                "type": "string"
              },
              "REQUEST_URI_RAW": {
                "type": "string"
              },
              "ARGS": {
                "type": "string"
              },
              "ARGS_COMBINED_SIZE": {
                "type": "string"
              },
              "ARGS_GET": {
                "type": "string"
              },
              "ARGS_GET_NAMES": {
                "type": "string"
              },
              "ARGS_POST": {
                "type": "string"
              },
              "ARGS_POST_NAMES": {
                "type": "string"
              },
              "FILES_NAMES": {
                "type": "string"
              },
              "GEO": {
                "type": "string"
              },
              "REMOTE_ADDR": {
                "type": "string"
              },
              "QUERY_STRING": {
                "type": "string"
              },
              "REQUEST_BASENAME": {
                "type": "string"
              },
              "REQUEST_BODY": {
                "type": "string"
              },
              "REQUEST_COOKIES_NAMES": {
                "type": "string"
              },
              "REQUEST_COOKIES": {
                "type": "string"
              },
              "REQUEST_FILENAME": {
                "type": "string"
              },
              "REQUEST_HEADERS_NAMES": {
                "type": "string"
              },
              "REQUEST_HEADERS": {
                "type": "string"
              },
              "REQUEST_LINE": {
                "type": "string"
              },
              "REQUEST_METHOD": {
                "type": "string"
              },
              "REQUEST_PROTOCOL": {
                "type": "string"
              },
              "RESPONSE_BODY": {
                "type": "string"
              },
              "RESPONSE_HEADERS": {
                "type": "string"
              },
              "RESPONSE_STATUS": {
                "type": "string"
              },
              "FINGERPRINT": {
                "type": "string"
              },
              "VERIFIED_BOT_CATEGORY": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "operatorType": {
            "$ref": "#/components/schemas/WafRuleOperatorType"
          },
          "severityType": {
            "$ref": "#/components/schemas/WafRuleSeverityType"
          },
          "transformationTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafRuleTransformationType"
            },
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "isNegated": {
            "type": "boolean",
            "nullable": true
          },
          "isRegexVariable": {
            "type": "boolean",
            "nullable": true
          },
          "requestCount": {
            "type": "integer",
            "format": "int32"
          },
          "counterKeyType": {
            "$ref": "#/components/schemas/WafRatelimitCounterKeyType"
          },
          "timeframe": {
            "$ref": "#/components/schemas/WafRateLimitTimeframeType"
          },
          "blockTime": {
            "$ref": "#/components/schemas/WafRatelimitBlockType"
          },
          "chainedRuleConditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafChainedRuleConditionItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomAccessList": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the custom access list.",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "description": "The display name of the custom access list.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Optional description of the access list's purpose or contents.",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/AccessListType"
          },
          "content": {
            "type": "string",
            "description": "The raw content of the access list with entries separated by newlines.",
            "nullable": true
          },
          "checksum": {
            "type": "string",
            "description": "SHA-256 checksum of the content for integrity verification.",
            "nullable": true
          },
          "entryCount": {
            "type": "integer",
            "description": "The total number of entries in the access list.",
            "format": "int64",
            "nullable": true
          },
          "lastModified": {
            "type": "string",
            "description": "The timestamp when the access list was last modified.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a custom access list associated with a shield zone."
      },
      "CustomAccessListResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CustomAccessList"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false,
        "description": "Response containing custom access list data or error information."
      },
      "CustomWafRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "shieldZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "userId": {
            "type": "string",
            "nullable": true
          },
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "ruleDescription": {
            "type": "string",
            "nullable": true
          },
          "ruleJson": {
            "type": "string",
            "nullable": true
          },
          "ruleConfiguration": {
            "$ref": "#/components/schemas/CreateCustomWafRuleModel"
          },
          "errorResponse": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "DDoS": {
        "type": "object",
        "properties": {
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "verifiedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "blockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "challengedRequests": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DDoSExecutionMode": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "description": "0 = Log\n1 = Block",
        "format": "int32",
        "x-enum-varnames": [
          "Log",
          "Block"
        ]
      },
      "DDoSShieldSensitivity": {
        "enum": [
          0,
          1,
          2,
          3,
          4
        ],
        "type": "integer",
        "description": "0 = Off\n1 = Low\n2 = Medium\n3 = High\n4 = Challenge",
        "format": "int32",
        "x-enum-varnames": [
          "Off",
          "Low",
          "Medium",
          "High",
          "Challenge"
        ]
      },
      "EventGroup": {
        "type": "object",
        "properties": {
          "key": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The group key: each requested groupBy dimension mapped to its value.",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "description": "Number of events in the group.",
            "format": "int64"
          },
          "firstSeen": {
            "type": "integer",
            "description": "Earliest event time in the group (Unix time in milliseconds, UTC).",
            "format": "int64"
          },
          "lastSeen": {
            "type": "integer",
            "description": "Most recent event time in the group (Unix time in milliseconds, UTC).",
            "format": "int64"
          },
          "context": {
            "type": "object",
            "additionalProperties": { },
            "description": "Context aggregates for the group: country, asn, per-action counts (blocked/challenged/logged),\nand features/ruleIds touched. Counts are numbers; features/ruleIds are comma-joined strings.",
            "nullable": true
          },
          "sparkline": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Per-group event counts bucketed across the requested window (mini time histogram), present only\nwhen the request set `buckets`. Bucket i covers [from + i*width, from + (i+1)*width).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An aggregated group of events (returned when the search request specifies groupBy)."
      },
      "EventLogsExportRequest": {
        "type": "object",
        "properties": {
          "from": {
            "type": "integer",
            "description": "Window start as Unix time in milliseconds (UTC). Required.",
            "format": "int64"
          },
          "to": {
            "type": "integer",
            "description": "Window end as Unix time in milliseconds (UTC). Required; must be after BunnyNet.Shield.Api.Entities.Waf.WafLogging.EventLogsExportRequest.from and within the last 72 hours.",
            "format": "int64"
          },
          "query": {
            "type": "string",
            "description": "Optional free-text search across IP, ruleId, URL, User-Agent and rule name.",
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventLogsFilter"
            },
            "description": "Optional filters, combined with AND. Repeated values within one filter combine with OR.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request body for exporting a Shield Zone's full filtered Event Logs set as CSV."
      },
      "EventLogsFilter": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Dimension to filter on: feature, ruleId, ip, ja4, ua, url, asn, country or action.",
            "nullable": true
          },
          "op": {
            "type": "string",
            "description": "Operator: eq, in, contains, cidr (ip only, IPv4/IPv6) or wildcard ('*' matches any run).",
            "nullable": true
          },
          "value": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Value(s) for the filter; multiple values are OR-combined.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single Event Logs filter clause."
      },
      "EventLogsSearchRequest": {
        "type": "object",
        "properties": {
          "from": {
            "type": "integer",
            "description": "Window start as Unix time in milliseconds (UTC). Required.",
            "format": "int64"
          },
          "to": {
            "type": "integer",
            "description": "Window end as Unix time in milliseconds (UTC). Required; must be after BunnyNet.Shield.Api.Entities.Waf.WafLogging.EventLogsSearchRequest.from and within the last 72 hours.",
            "format": "int64"
          },
          "query": {
            "type": "string",
            "description": "Optional free-text search across IP, ruleId, URL, User-Agent and rule name.",
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventLogsFilter"
            },
            "description": "Optional filters, combined with AND. Repeated values within one filter combine with OR.",
            "nullable": true
          },
          "groupBy": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional ordered dimensions to group by, e.g. [\"ip\",\"ja4\"]. Omit for flat rows.\nAllowed: feature, ruleId, ip, ja4, ua, url, asn, country, action.",
            "nullable": true
          },
          "buckets": {
            "type": "integer",
            "description": "When grouping, the number of time buckets for each group's sparkline histogram over the\nwindow. 0 (default) omits the sparkline; clamped to 500.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Zero-based page index.",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Page size; clamped to 1–500 (defaults to 50 when unset).",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Request body for searching a Shield Zone's Event Logs within a time window."
      },
      "EventLogsSearchResponse": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventRow"
            },
            "description": "Flat event rows (populated when the request had no groupBy).",
            "nullable": true
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventGroup"
            },
            "description": "Aggregated groups (populated when the request had a groupBy).",
            "nullable": true
          },
          "total": {
            "type": "integer",
            "description": "Total flat rows, or total distinct groups when grouped.",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages for the current page size.",
            "format": "int32"
          },
          "page": {
            "type": "integer",
            "description": "Zero-based index of the returned page.",
            "format": "int32"
          },
          "errorResponse": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false,
        "description": "Result of an Event Logs search. Exactly one of BunnyNet.Shield.Api.Entities.Waf.WafLogging.EventLogsSearchResponse.rows or BunnyNet.Shield.Api.Entities.Waf.WafLogging.EventLogsSearchResponse.groups is populated."
      },
      "EventRow": {
        "type": "object",
        "properties": {
          "logId": {
            "type": "string",
            "description": "Unique event identifier.",
            "nullable": true
          },
          "timestamp": {
            "type": "integer",
            "description": "Event time as Unix time in milliseconds (UTC).",
            "format": "int64"
          },
          "log": {
            "description": "The full request context for the event (JSON object).",
            "nullable": true
          },
          "fields": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Resolved dimension values for the event (e.g. ip, ruleId, url, ja4).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single event returned in a flat (ungrouped) search."
      },
      "GenericRequestResponse": {
        "type": "object",
        "properties": {
          "statusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "success": {
            "type": "boolean",
            "description": "Indicates whether the operation was successful."
          },
          "message": {
            "type": "string",
            "description": "Human-readable message describing the result of the operation.",
            "nullable": true
          },
          "errorKey": {
            "type": "string",
            "description": "Unique error key for programmatic error handling, if applicable.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Generic response object containing status information for API operations."
      },
      "GetApiGuardianEndpointMetricsResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ApiGuardianEndpointMetrics"
          }
        },
        "additionalProperties": false
      },
      "GetApiGuardianMetricsResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ApiGuardianMetrics"
          }
        },
        "additionalProperties": false
      },
      "GetApiGuardianResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ApiGuardianConfigurationResponse"
          }
        },
        "additionalProperties": false,
        "description": "Represents the response for getting API Guardian configuration."
      },
      "GetCustomWafRulesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomWafRule"
            },
            "nullable": true
          },
          "page": {
            "$ref": "#/components/schemas/PaginationResponse"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "GetRatelimitMetricsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RatelimitMetrics"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "GetShieldZoneBotDetectionMetricsResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ShieldZoneBotDetectionMetrics"
          }
        },
        "additionalProperties": false
      },
      "GetShieldZoneDefaultsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ShieldZoneDefaults"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "GetShieldZoneMetricsOverviewResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ShieldZoneMetrics"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "GetShieldZonePullzoneMappingResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShieldZonePullZoneMapping"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetShieldZoneRatelimitMetricsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShieldZoneRatelimitMetrics"
            },
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "GetShieldZoneResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ShieldZoneResponse"
          }
        },
        "additionalProperties": false
      },
      "GetShieldZoneUploadScanningMetricsResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ShieldZoneUploadScanningMetrics"
          }
        },
        "additionalProperties": false
      },
      "GetShieldZonesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShieldZoneResponse"
            },
            "nullable": true
          },
          "page": {
            "$ref": "#/components/schemas/PaginationResponse"
          }
        },
        "additionalProperties": false
      },
      "GetTriggeredRulesResponse": {
        "type": "object",
        "properties": {
          "errorResponse": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "triggeredRules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TriggeredRuleItem"
            },
            "nullable": true
          },
          "totalTriggeredRules": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "GetWafEngineConfigResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfigVariableValueMinimal"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetWafEnumsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafMappedEnumList"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetWafProfilesResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/WafProfileMinimal"
              }
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetWafRuleMetricsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WafRuleMetrics"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "GetWafRulesSegmentedByPlanResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafRulesByPlanModel"
            },
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "HttpStatusCode": {
        "enum": [
          100,
          101,
          102,
          103,
          200,
          201,
          202,
          203,
          204,
          205,
          206,
          207,
          208,
          226,
          300,
          301,
          302,
          303,
          304,
          305,
          306,
          307,
          308,
          400,
          401,
          402,
          403,
          404,
          405,
          406,
          407,
          408,
          409,
          410,
          411,
          412,
          413,
          414,
          415,
          416,
          417,
          421,
          422,
          423,
          424,
          426,
          428,
          429,
          431,
          451,
          500,
          501,
          502,
          503,
          504,
          505,
          506,
          507,
          508,
          510,
          511
        ],
        "type": "integer",
        "description": "100 = Continue\n101 = SwitchingProtocols\n102 = Processing\n103 = EarlyHints\n200 = OK\n201 = Created\n202 = Accepted\n203 = NonAuthoritativeInformation\n204 = NoContent\n205 = ResetContent\n206 = PartialContent\n207 = MultiStatus\n208 = AlreadyReported\n226 = IMUsed\n300 = MultipleChoices\n300 = Ambiguous\n301 = MovedPermanently\n301 = Moved\n302 = Found\n302 = Redirect\n303 = SeeOther\n303 = RedirectMethod\n304 = NotModified\n305 = UseProxy\n306 = Unused\n307 = TemporaryRedirect\n307 = RedirectKeepVerb\n308 = PermanentRedirect\n400 = BadRequest\n401 = Unauthorized\n402 = PaymentRequired\n403 = Forbidden\n404 = NotFound\n405 = MethodNotAllowed\n406 = NotAcceptable\n407 = ProxyAuthenticationRequired\n408 = RequestTimeout\n409 = Conflict\n410 = Gone\n411 = LengthRequired\n412 = PreconditionFailed\n413 = RequestEntityTooLarge\n414 = RequestUriTooLong\n415 = UnsupportedMediaType\n416 = RequestedRangeNotSatisfiable\n417 = ExpectationFailed\n421 = MisdirectedRequest\n422 = UnprocessableEntity\n422 = UnprocessableContent\n423 = Locked\n424 = FailedDependency\n426 = UpgradeRequired\n428 = PreconditionRequired\n429 = TooManyRequests\n431 = RequestHeaderFieldsTooLarge\n451 = UnavailableForLegalReasons\n500 = InternalServerError\n501 = NotImplemented\n502 = BadGateway\n503 = ServiceUnavailable\n504 = GatewayTimeout\n505 = HttpVersionNotSupported\n506 = VariantAlsoNegotiates\n507 = InsufficientStorage\n508 = LoopDetected\n510 = NotExtended\n511 = NetworkAuthenticationRequired",
        "format": "int32",
        "x-enum-varnames": [
          "Continue",
          "SwitchingProtocols",
          "Processing",
          "EarlyHints",
          "OK",
          "Created",
          "Accepted",
          "NonAuthoritativeInformation",
          "NoContent",
          "ResetContent",
          "PartialContent",
          "MultiStatus",
          "AlreadyReported",
          "IMUsed",
          "MultipleChoices",
          "Ambiguous",
          "MovedPermanently",
          "Moved",
          "Found",
          "Redirect",
          "SeeOther",
          "RedirectMethod",
          "NotModified",
          "UseProxy",
          "Unused",
          "TemporaryRedirect",
          "RedirectKeepVerb",
          "PermanentRedirect",
          "BadRequest",
          "Unauthorized",
          "PaymentRequired",
          "Forbidden",
          "NotFound",
          "MethodNotAllowed",
          "NotAcceptable",
          "ProxyAuthenticationRequired",
          "RequestTimeout",
          "Conflict",
          "Gone",
          "LengthRequired",
          "PreconditionFailed",
          "RequestEntityTooLarge",
          "RequestUriTooLong",
          "UnsupportedMediaType",
          "RequestedRangeNotSatisfiable",
          "ExpectationFailed",
          "MisdirectedRequest",
          "UnprocessableEntity",
          "UnprocessableContent",
          "Locked",
          "FailedDependency",
          "UpgradeRequired",
          "PreconditionRequired",
          "TooManyRequests",
          "RequestHeaderFieldsTooLarge",
          "UnavailableForLegalReasons",
          "InternalServerError",
          "NotImplemented",
          "BadGateway",
          "ServiceUnavailable",
          "GatewayTimeout",
          "HttpVersionNotSupported",
          "VariantAlsoNegotiates",
          "InsufficientStorage",
          "LoopDetected",
          "NotExtended",
          "NetworkAuthenticationRequired"
        ]
      },
      "IOutputFormatter": {
        "type": "object",
        "additionalProperties": false
      },
      "IndividualRatelimit": {
        "type": "object",
        "properties": {
          "totalBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "loggedBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "challengedBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "blockedBreaches": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "IpAddressConfiguration": {
        "type": "object",
        "properties": {
          "sensitivity": {
            "$ref": "#/components/schemas/BotDetectionSensitivity"
          }
        },
        "additionalProperties": false
      },
      "Labels": {
        "type": "object",
        "properties": {
          "asn": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "ruleId": {
            "type": "string",
            "nullable": true
          },
          "severity": {
            "type": "string",
            "nullable": true
          },
          "method": {
            "type": "string",
            "nullable": true
          },
          "ruleGroup": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "serverZone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Log": {
        "type": "object",
        "properties": {
          "logId": {
            "type": "string",
            "nullable": true
          },
          "timestamp": {
            "type": "integer",
            "format": "int64"
          },
          "log": {
            "type": "string",
            "nullable": true
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false
      },
      "MetricsOverviewResolution": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "type": "integer",
        "description": "0 = Auto\n1 = TwoMinutes\n2 = TenMinutes\n3 = Hourly\n4 = Daily\n5 = Weekly\n6 = Monthly",
        "format": "int32",
        "x-enum-varnames": [
          "Auto",
          "TwoMinutes",
          "TenMinutes",
          "Hourly",
          "Daily",
          "Weekly",
          "Monthly"
        ]
      },
      "OverageSegment": {
        "type": "object",
        "properties": {
          "periodStart": {
            "type": "string",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "format": "date-time"
          },
          "planType": {
            "$ref": "#/components/schemas/ShieldPlanType"
          },
          "overageAllowance": {
            "type": "integer",
            "format": "int64"
          },
          "overage": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "OverviewMetric": {
        "type": "object",
        "properties": {
          "metrics": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "integer",
                "format": "int64"
              }
            },
            "nullable": true
          },
          "totals": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaginationResponse": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32"
          },
          "currentPage": {
            "type": "integer",
            "format": "int32"
          },
          "nextPage": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "PullZoneWafConfigVariableModel": {
        "required": [
          "name",
          "valueEncoded"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "valueEncoded": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RateLimitRule": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "shieldZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "userId": {
            "type": "string",
            "nullable": true
          },
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "ruleDescription": {
            "type": "string",
            "nullable": true
          },
          "ruleJson": {
            "type": "string",
            "nullable": true
          },
          "ruleConfiguration": {
            "$ref": "#/components/schemas/CreateWafRateLimitRuleModel"
          },
          "errorResponse": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "RateLimitTimeframe": {
        "enum": [
          1,
          10,
          60,
          300,
          900,
          3600
        ],
        "type": "integer",
        "description": "1 = PerSecond\n10 = PerTenSeconds\n60 = PerOneMinute\n300 = PerFiveMinutes\n900 = PerFifteenMinutes\n3600 = PerOneHour",
        "format": "int32",
        "x-enum-varnames": [
          "PerSecond",
          "PerTenSeconds",
          "PerOneMinute",
          "PerFiveMinutes",
          "PerFifteenMinutes",
          "PerOneHour"
        ]
      },
      "Ratelimit": {
        "type": "object",
        "properties": {
          "totalBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "loggedBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "challengedBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "blockedBreaches": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "RatelimitMetrics": {
        "type": "object",
        "properties": {
          "overview": {
            "$ref": "#/components/schemas/IndividualRatelimit"
          },
          "ratelimitOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/IndividualRatelimit"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RatelimitRuleActionType": {
        "enum": [
          1,
          2,
          3
        ],
        "type": "integer",
        "description": "1 = RateLimit\n2 = Log\n3 = Challenge",
        "format": "int32",
        "x-enum-varnames": [
          "RateLimit",
          "Log",
          "Challenge"
        ]
      },
      "RequestIntegrityConfiguration": {
        "type": "object",
        "properties": {
          "sensitivity": {
            "$ref": "#/components/schemas/BotDetectionSensitivity"
          }
        },
        "additionalProperties": false
      },
      "ReviewActionType": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "0 = Ignore\n1 = LogOnly\n2 = DisableRule",
        "format": "int32",
        "x-enum-varnames": [
          "Ignore",
          "LogOnly",
          "DisableRule"
        ]
      },
      "ShieldOverview": {
        "type": "object",
        "properties": {
          "dDoSMitigated": {
            "type": "integer",
            "format": "int32"
          },
          "wafTriggeredRules": {
            "type": "integer",
            "format": "int32"
          },
          "ratelimitBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "botDetectionChallenged": {
            "type": "integer",
            "format": "int32"
          },
          "accessListActions": {
            "type": "integer",
            "format": "int32"
          },
          "uploadScanningBlocks": {
            "type": "integer",
            "format": "int32"
          },
          "apiGuardianBlocks": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ShieldOverviewMetrics": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ShieldOverviewMetricsData"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "ShieldOverviewMetricsData": {
        "type": "object",
        "properties": {
          "waf": {
            "$ref": "#/components/schemas/OverviewMetric"
          },
          "ddos": {
            "$ref": "#/components/schemas/OverviewMetric"
          },
          "rateLimit": {
            "$ref": "#/components/schemas/OverviewMetric"
          },
          "accessLists": {
            "$ref": "#/components/schemas/OverviewMetric"
          },
          "botDetection": {
            "$ref": "#/components/schemas/OverviewMetric"
          },
          "uploadScanning": {
            "$ref": "#/components/schemas/OverviewMetric"
          },
          "apiGuardian": {
            "$ref": "#/components/schemas/OverviewMetric"
          },
          "totalCleanRequestsLimit": {
            "type": "integer",
            "format": "int64"
          },
          "totalBillableRequestsThisMonth": {
            "type": "integer",
            "format": "int64"
          },
          "resolution": {
            "$ref": "#/components/schemas/MetricsOverviewResolution"
          }
        },
        "additionalProperties": false
      },
      "ShieldPlanType": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "description": "0 = Basic\n1 = Advanced\n2 = Business\n3 = Enterprise",
        "format": "int32",
        "x-enum-varnames": [
          "Basic",
          "Advanced",
          "Business",
          "Enterprise"
        ]
      },
      "ShieldZoneBotDetectionMetrics": {
        "type": "object",
        "properties": {
          "overviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/BotDetectionData"
            },
            "nullable": true
          },
          "totalLoggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "totalChallengedRequests": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneDefaults": {
        "required": [
          "accessLists",
          "antivirusScanningMode",
          "botDetectionExecutionMode",
          "csamScanningMode",
          "shieldZone"
        ],
        "type": "object",
        "properties": {
          "shieldZone": {
            "$ref": "#/components/schemas/ShieldZoneRequest"
          },
          "botDetectionExecutionMode": {
            "$ref": "#/components/schemas/BotDetectionExecutionMode"
          },
          "csamScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          },
          "antivirusScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          },
          "accessLists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SuggestedAccessList"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneMetrics": {
        "type": "object",
        "properties": {
          "overview": {
            "$ref": "#/components/schemas/ShieldOverview"
          },
          "waf": {
            "$ref": "#/components/schemas/Waf"
          },
          "overviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ShieldOverview"
            },
            "nullable": true
          },
          "dDoS": {
            "$ref": "#/components/schemas/DDoS"
          },
          "dDoSOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/DDoS"
            },
            "nullable": true
          },
          "ratelimit": {
            "$ref": "#/components/schemas/Ratelimit"
          },
          "ratelimitOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Ratelimit"
            },
            "nullable": true
          },
          "botDetection": {
            "$ref": "#/components/schemas/BotDetectionData"
          },
          "botDetectionOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/BotDetectionData"
            },
            "nullable": true
          },
          "accessList": {
            "$ref": "#/components/schemas/AccessList"
          },
          "accessListOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AccessList"
            },
            "nullable": true
          },
          "uploadScanningOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/UploadScanning"
            },
            "nullable": true
          },
          "apiGuardian": {
            "$ref": "#/components/schemas/ApiGuardianEndpointActivity"
          },
          "apiGuardianOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ApiGuardianEndpointActivity"
            },
            "nullable": true
          },
          "totalCleanRequestsLimit": {
            "type": "integer",
            "format": "int64"
          },
          "totalBillableRequests": {
            "type": "integer",
            "format": "int64"
          },
          "uploadScanning": {
            "$ref": "#/components/schemas/UploadScanning"
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneMonthlyOveragesResult": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "year": {
            "type": "integer",
            "format": "int32"
          },
          "month": {
            "type": "integer",
            "format": "int32"
          },
          "totalOverage": {
            "type": "integer",
            "format": "int64"
          },
          "totalCleanRequests": {
            "type": "integer",
            "format": "int64"
          },
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OverageSegment"
            },
            "nullable": true
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "ShieldZonePullZoneMapping": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "pullZoneId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneRatelimit": {
        "type": "object",
        "properties": {
          "totalBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "loggedBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "challengedBreaches": {
            "type": "integer",
            "format": "int32"
          },
          "blockedBreaches": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneRatelimitMetrics": {
        "type": "object",
        "properties": {
          "ratelimitId": {
            "type": "integer",
            "format": "int64"
          },
          "overview": {
            "$ref": "#/components/schemas/ShieldZoneRatelimit"
          },
          "ratelimitOverviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/ShieldZoneRatelimit"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneRequest": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "premiumPlan": {
            "type": "boolean",
            "nullable": true,
            "deprecated": true
          },
          "planType": {
            "$ref": "#/components/schemas/ShieldPlanType"
          },
          "learningMode": {
            "type": "boolean",
            "nullable": true
          },
          "learningModeUntil": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "wafEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "wafExecutionMode": {
            "$ref": "#/components/schemas/WAFExecutionMode"
          },
          "wafDisabledRules": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "wafLogOnlyRules": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "wafCustomRuleOrder": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          },
          "wafRequestHeaderLoggingEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "requestBodyLoggingEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "wafRequestIgnoredHeaders": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "wafRealtimeThreatIntelligenceEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "wafProfileId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "wafEngineConfig": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PullZoneWafConfigVariableModel"
            },
            "nullable": true
          },
          "wafRequestBodyLimitAction": {
            "$ref": "#/components/schemas/WAFPayloadLimitAction"
          },
          "wafResponseBodyLimitAction": {
            "$ref": "#/components/schemas/WAFPayloadLimitAction"
          },
          "dDoSShieldSensitivity": {
            "$ref": "#/components/schemas/DDoSShieldSensitivity"
          },
          "dDoSChallengeWindow": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "whitelabelResponsePages": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneResponse": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "pullZoneId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "learningMode": {
            "type": "boolean",
            "nullable": true
          },
          "learningModeUntil": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "wafEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "wafExecutionMode": {
            "$ref": "#/components/schemas/WAFExecutionMode"
          },
          "wafDisabledRules": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "wafLogOnlyRules": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "wafCustomRuleOrder": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          },
          "wafRequestHeaderLoggingEnabled": {
            "type": "boolean"
          },
          "requestBodyLoggingEnabled": {
            "type": "boolean"
          },
          "wafRequestIgnoredHeaders": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "wafRealtimeThreatIntelligenceEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "wafProfileId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "wafEngineConfig": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PullZoneWafConfigVariableModel"
            },
            "nullable": true
          },
          "wafRequestBodyLimitAction": {
            "$ref": "#/components/schemas/WAFPayloadLimitAction"
          },
          "wafResponseBodyLimitAction": {
            "$ref": "#/components/schemas/WAFPayloadLimitAction"
          },
          "rateLimitRulesLimit": {
            "type": "integer",
            "format": "int32"
          },
          "customWafRulesLimit": {
            "type": "integer",
            "format": "int32"
          },
          "planType": {
            "$ref": "#/components/schemas/ShieldPlanType"
          },
          "dDoSShieldSensitivity": {
            "$ref": "#/components/schemas/DDoSShieldSensitivity"
          },
          "dDoSExecutionMode": {
            "$ref": "#/components/schemas/DDoSExecutionMode"
          },
          "dDoSChallengeWindow": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "whitelabelResponsePages": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ShieldZoneUploadScanningMetrics": {
        "type": "object",
        "properties": {
          "overviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/UploadScanning"
            },
            "nullable": true
          },
          "totalLoggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "totalBlockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "totalFilesScanned": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SuggestedAccessList": {
        "required": [
          "action",
          "listId",
          "name",
          "requiredPlan"
        ],
        "type": "object",
        "properties": {
          "listId": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "requiredPlan": {
            "$ref": "#/components/schemas/ShieldPlanType"
          },
          "action": {
            "$ref": "#/components/schemas/AccessListAction"
          }
        },
        "additionalProperties": false
      },
      "TriggeredRuleItem": {
        "type": "object",
        "properties": {
          "ruleId": {
            "type": "string",
            "nullable": true
          },
          "ruleDescription": {
            "type": "string",
            "nullable": true
          },
          "topTargetedUrls": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "totalTriggeredRequests": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "ruleLogs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Log"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TriggeredRuleRecommendationResponse": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int64"
          },
          "ruleId": {
            "type": "string",
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "recommendation": {
            "type": "string",
            "nullable": true
          },
          "errorResponse": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "UnauthorizedResult": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UnmatchedPathAction": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "0 = Block\n1 = Log\n2 = Ignore",
        "format": "int32",
        "x-enum-varnames": [
          "Block",
          "Log",
          "Ignore"
        ]
      },
      "UpdateAccessListConfigurationRequest": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "description": "Whether the access list should be enabled or disabled. If null, the current state is preserved.",
            "nullable": true
          },
          "action": {
            "$ref": "#/components/schemas/AccessListAction"
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating an access list configuration."
      },
      "UpdateAccessListConfigurationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UpdateAccessListConfigurationRequest"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false,
        "description": "Response containing the updated access list configuration data or error information."
      },
      "UpdateApiGuardianConfigurationRequest": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "description": "Enable or disable API Guardian entirely for this shield zone.",
            "nullable": true
          },
          "executionMode": {
            "$ref": "#/components/schemas/WAFExecutionMode"
          },
          "bodyLimitAction": {
            "$ref": "#/components/schemas/WAFPayloadLimitAction"
          },
          "unmatchedPathAction": {
            "$ref": "#/components/schemas/UnmatchedPathAction"
          }
        },
        "additionalProperties": false,
        "description": "Patch request for updating the global API Guardian configuration.\nAll fields are optional — only provided fields are applied."
      },
      "UpdateApiGuardianConfigurationResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ApiGuardianConfigurationDetails"
          }
        },
        "additionalProperties": false,
        "description": "Response for the PATCH /configuration endpoint."
      },
      "UpdateApiGuardianEndpointRequest": {
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "description": "Enable or disable this endpoint. Disabled endpoints are not enforced.",
            "nullable": true
          },
          "validateRequestBodySchema": {
            "type": "boolean",
            "description": "Enable or disable request body schema validation.\nOnly effective if the endpoint's OAS operation defines a request body schema.",
            "nullable": true
          },
          "validateResponseBodySchema": {
            "type": "boolean",
            "description": "Enable or disable response body schema validation.\nOnly effective if the endpoint's OAS operation defines response schemas.",
            "nullable": true
          },
          "validateAuthorization": {
            "type": "boolean",
            "description": "Enable or disable enforcement of authentication requirements\nas defined in the OAS security schemes.",
            "nullable": true
          },
          "injectionDetectionParameters": {
            "type": "object",
            "properties": {
              "Path": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Query": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Header": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "Cookie": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false,
            "description": "Parameters to run injection detection on, grouped by location (path, query, header, cookie).\nMust be a subset of the endpoint's available parameters.",
            "nullable": true
          },
          "detectParameterXss": {
            "type": "boolean",
            "description": "Enable XSS detection on the selected injection detection parameters.",
            "nullable": true
          },
          "detectParameterSqli": {
            "type": "boolean",
            "description": "Enable SQL injection detection on the selected injection detection parameters.",
            "nullable": true
          },
          "rateLimitingEnabled": {
            "type": "boolean",
            "description": "Enable or disable per-endpoint rate limiting.",
            "nullable": true
          },
          "rateLimitingType": {
            "$ref": "#/components/schemas/ApiGuardianRateLimitType"
          },
          "rateLimitingRequestCount": {
            "type": "integer",
            "description": "Maximum number of requests allowed within the timeframe before blocking. Must be greater than zero.",
            "format": "int32",
            "nullable": true
          },
          "rateLimitingTimeframe": {
            "$ref": "#/components/schemas/RateLimitTimeframe"
          }
        },
        "additionalProperties": false,
        "description": "Patch request for updating an individual API Guardian endpoint.\nAll fields are optional — only provided fields are applied."
      },
      "UpdateApiGuardianEndpointResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ApiGuardianEndpointDetails"
          }
        },
        "additionalProperties": false,
        "description": "Response for the PATCH /endpoint/{endpointId} endpoint."
      },
      "UpdateBotCategorizationConfigurationRequest": {
        "required": [
          "action"
        ],
        "type": "object",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/BotCategorizationAction"
          }
        },
        "additionalProperties": false
      },
      "UpdateBotCategorizationConfigurationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BotCategorizationDetails"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "UpdateBotCategoryConfigurationRequest": {
        "required": [
          "action"
        ],
        "type": "object",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/BotCategoryAction"
          }
        },
        "additionalProperties": false,
        "description": "Request body for setting a category-level action. Uses BunnyNet.Shield.Database.Enums.BotCategoryAction rather\nthan BunnyNet.Shield.Database.Enums.BotCategorizationAction so the contract can only express actions valid for a\ncategory (no Ignore)."
      },
      "UpdateBotCategoryConfigurationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BotCategoryDetails"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "UpdateBotDetectionRequest": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "executionMode": {
            "$ref": "#/components/schemas/BotDetectionExecutionMode"
          },
          "requestIntegrity": {
            "$ref": "#/components/schemas/RequestIntegrityConfiguration"
          },
          "ipAddress": {
            "$ref": "#/components/schemas/IpAddressConfiguration"
          },
          "browserFingerprint": {
            "$ref": "#/components/schemas/BrowserFingerprintConfiguration"
          }
        },
        "additionalProperties": false
      },
      "UpdateBotDetectionResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/BotDetectionConfigurationState"
          }
        },
        "additionalProperties": false
      },
      "UpdateCustomAccessListRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The new display name for the access list. If null, the current name is preserved.",
            "nullable": true
          },
          "content": {
            "type": "string",
            "description": "The new content for the access list with entries separated by newlines. If null, the current content is preserved.",
            "nullable": true
          },
          "checksum": {
            "type": "string",
            "description": "SHA-256 checksum of the new content for integrity verification. If null, it will be automatically calculated.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating a custom access list."
      },
      "UpdateCustomWafRuleRequest": {
        "type": "object",
        "properties": {
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "ruleDescription": {
            "type": "string",
            "nullable": true
          },
          "ruleConfiguration": {
            "$ref": "#/components/schemas/CreateCustomWafRuleModel"
          }
        },
        "additionalProperties": false
      },
      "UpdateReviewTriggeredRuleRequest": {
        "type": "object",
        "properties": {
          "ruleId": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "$ref": "#/components/schemas/ReviewActionType"
          }
        },
        "additionalProperties": false
      },
      "UpdateReviewTriggeredRuleResponse": {
        "type": "object",
        "properties": {
          "errorResponse": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "success": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "UpdateShieldZoneRequest": {
        "required": [
          "shieldZoneId"
        ],
        "type": "object",
        "properties": {
          "shieldZone": {
            "$ref": "#/components/schemas/ShieldZoneRequest"
          },
          "shieldZoneId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "UpdateShieldZoneResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UpdateShieldZoneRequest"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "UpdateUploadScanningConfigurationRequest": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "isEnabled": {
            "type": "boolean",
            "nullable": true
          },
          "csamScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          },
          "antivirusScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          }
        },
        "additionalProperties": false
      },
      "UpdateUploadScanningConfigurationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/UploadScanningConfigurationState"
          },
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "UpdateWafRateLimitRequest": {
        "type": "object",
        "properties": {
          "ruleName": {
            "type": "string",
            "nullable": true
          },
          "ruleDescription": {
            "type": "string",
            "nullable": true
          },
          "ruleConfiguration": {
            "$ref": "#/components/schemas/CreateWafRateLimitRuleModel"
          }
        },
        "additionalProperties": false
      },
      "UploadScanning": {
        "type": "object",
        "properties": {
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "blockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "filesScanned": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UploadScanningConfigurationResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/UploadScanningConfigurationState"
          }
        },
        "additionalProperties": false
      },
      "UploadScanningConfigurationState": {
        "type": "object",
        "properties": {
          "shieldZoneId": {
            "type": "integer",
            "format": "int32"
          },
          "isEnabled": {
            "type": "boolean"
          },
          "csamScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          },
          "antivirusScanningMode": {
            "$ref": "#/components/schemas/UploadScanningScannerMode"
          }
        },
        "additionalProperties": false
      },
      "UploadScanningScannerMode": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "0 = Disabled\n1 = Log\n2 = Block",
        "format": "int32",
        "x-enum-varnames": [
          "Disabled",
          "Log",
          "Block"
        ]
      },
      "UpsertOpenApiSpecificationRequest": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The file contents of the OpenAPI specification.",
            "nullable": true
          },
          "enforceAuthorizationValidation": {
            "type": "boolean",
            "description": "Whether to enforce authentication requirements for endpoints.\nOn upload, defaults to true if not specified.\nOn update, existing endpoint auth settings are preserved if not specified.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the request for uploading or updating an OpenAPI specification in API Guardian."
      },
      "UpsertOpenApiSpecificationResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          },
          "data": {
            "$ref": "#/components/schemas/ApiGuardianConfigurationResponse"
          }
        },
        "additionalProperties": false,
        "description": "Represents the response for uploading or updating an OpenAPI specification in API Guardian."
      },
      "WAFExecutionMode": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "description": "0 = Log\n1 = Block",
        "format": "int32",
        "x-enum-varnames": [
          "Log",
          "Block"
        ]
      },
      "WAFPayloadLimitAction": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "0 = Block\n1 = Log\n2 = Ignore",
        "format": "int32",
        "x-enum-varnames": [
          "Block",
          "Log",
          "Ignore"
        ]
      },
      "Waf": {
        "type": "object",
        "properties": {
          "totalTriggeredRules": {
            "type": "integer",
            "format": "int32"
          },
          "blockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "challengedRequests": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WafChainedRuleConditionItem": {
        "type": "object",
        "properties": {
          "variableTypes": {
            "type": "object",
            "properties": {
              "REQUEST_URI": {
                "type": "string"
              },
              "REQUEST_URI_RAW": {
                "type": "string"
              },
              "ARGS": {
                "type": "string"
              },
              "ARGS_COMBINED_SIZE": {
                "type": "string"
              },
              "ARGS_GET": {
                "type": "string"
              },
              "ARGS_GET_NAMES": {
                "type": "string"
              },
              "ARGS_POST": {
                "type": "string"
              },
              "ARGS_POST_NAMES": {
                "type": "string"
              },
              "FILES_NAMES": {
                "type": "string"
              },
              "GEO": {
                "type": "string"
              },
              "REMOTE_ADDR": {
                "type": "string"
              },
              "QUERY_STRING": {
                "type": "string"
              },
              "REQUEST_BASENAME": {
                "type": "string"
              },
              "REQUEST_BODY": {
                "type": "string"
              },
              "REQUEST_COOKIES_NAMES": {
                "type": "string"
              },
              "REQUEST_COOKIES": {
                "type": "string"
              },
              "REQUEST_FILENAME": {
                "type": "string"
              },
              "REQUEST_HEADERS_NAMES": {
                "type": "string"
              },
              "REQUEST_HEADERS": {
                "type": "string"
              },
              "REQUEST_LINE": {
                "type": "string"
              },
              "REQUEST_METHOD": {
                "type": "string"
              },
              "REQUEST_PROTOCOL": {
                "type": "string"
              },
              "RESPONSE_BODY": {
                "type": "string"
              },
              "RESPONSE_HEADERS": {
                "type": "string"
              },
              "RESPONSE_STATUS": {
                "type": "string"
              },
              "FINGERPRINT": {
                "type": "string"
              },
              "VERIFIED_BOT_CATEGORY": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "nullable": true
          },
          "operatorType": {
            "$ref": "#/components/schemas/WafRuleOperatorType"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "isNegated": {
            "type": "boolean",
            "nullable": true
          },
          "isRegexVariable": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafLoggingResponse": {
        "type": "object",
        "properties": {
          "logs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Log"
            },
            "nullable": true
          },
          "hasMoreData": {
            "type": "boolean"
          },
          "continuationToken": {
            "type": "string",
            "nullable": true
          },
          "startToken": {
            "type": "string",
            "nullable": true
          },
          "errorResponse": {
            "$ref": "#/components/schemas/GenericRequestResponse"
          }
        },
        "additionalProperties": false
      },
      "WafMappedEnum": {
        "type": "object",
        "properties": {
          "optionalInput": {
            "type": "boolean",
            "nullable": true
          },
          "isPremium": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "integer",
            "format": "int32"
          },
          "supportedValues": {
            "$ref": "#/components/schemas/WafSupportedValues"
          },
          "recommendedOperator": {
            "$ref": "#/components/schemas/WafRecommendedOperator"
          }
        },
        "additionalProperties": false
      },
      "WafMappedEnumList": {
        "type": "object",
        "properties": {
          "enumName": {
            "type": "string",
            "nullable": true
          },
          "enumValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafMappedEnum"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafProfileMinimal": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "isPremium": {
            "type": "boolean"
          },
          "profileCategory": {
            "type": "string",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "features": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafRateLimitTimeframeType": {
        "enum": [
          1,
          10,
          60,
          300,
          900,
          3600
        ],
        "type": "integer",
        "description": "1 = PerSecond\n10 = PerTenSeconds\n60 = PerOneMinute\n300 = PerFiveMinutes\n900 = PerFifteenMinutes\n3600 = PerOneHour",
        "format": "int32",
        "x-enum-varnames": [
          "PerSecond",
          "PerTenSeconds",
          "PerOneMinute",
          "PerFiveMinutes",
          "PerFifteenMinutes",
          "PerOneHour"
        ]
      },
      "WafRatelimitBlockType": {
        "enum": [
          30,
          60,
          300,
          900,
          1800,
          3600
        ],
        "type": "integer",
        "description": "30 = ForThirtySeconds\n60 = ForOneMinute\n300 = ForFiveMinutes\n900 = ForFifteenMinutes\n1800 = ForThirtyMinutes\n3600 = ForOneHour",
        "format": "int32",
        "x-enum-varnames": [
          "ForThirtySeconds",
          "ForOneMinute",
          "ForFiveMinutes",
          "ForFifteenMinutes",
          "ForThirtyMinutes",
          "ForOneHour"
        ]
      },
      "WafRatelimitCounterKeyType": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7
        ],
        "type": "integer",
        "description": "0 = IP\n1 = Host\n2 = Country\n3 = City\n4 = ASN\n5 = Organization\n6 = JA4\n7 = IP_JA4",
        "format": "int32",
        "x-enum-varnames": [
          "IP",
          "Host",
          "Country",
          "City",
          "ASN",
          "Organization",
          "JA4",
          "IP_JA4"
        ]
      },
      "WafRecommendedOperator": {
        "type": "object",
        "properties": {
          "operator": {
            "$ref": "#/components/schemas/WafRuleOperatorType"
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafRule": {
        "type": "object",
        "properties": {
          "totalTriggers": {
            "type": "integer",
            "format": "int32"
          },
          "blockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "challengedRequests": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WafRuleActionType": {
        "enum": [
          1,
          2,
          3,
          4,
          5
        ],
        "type": "integer",
        "description": "1 = Block\n2 = Log\n3 = Challenge\n4 = Allow\n5 = Bypass",
        "format": "int32",
        "x-enum-varnames": [
          "Block",
          "Log",
          "Challenge",
          "Allow",
          "Bypass"
        ]
      },
      "WafRuleGroupModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "mainGroup": {
            "type": "string",
            "nullable": true
          },
          "ruleset": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafRuleModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafRuleMainGroupModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "ruleset": {
            "type": "string",
            "nullable": true
          },
          "ruleGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafRuleGroupModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafRuleMetrics": {
        "type": "object",
        "properties": {
          "totalTriggers": {
            "type": "integer",
            "format": "int32"
          },
          "blockedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "loggedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "challengedRequests": {
            "type": "integer",
            "format": "int32"
          },
          "overviewPastTwentyEightDays": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/WafRule"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafRuleModel": {
        "type": "object",
        "properties": {
          "ruleId": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafRuleOperatorType": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          12,
          14,
          15,
          17,
          18
        ],
        "type": "integer",
        "description": "0 = BEGINSWITH\n1 = ENDSWITH\n2 = CONTAINS\n3 = CONTAINSWORD\n4 = STRMATCH\n5 = EQ\n6 = GE\n7 = GT\n8 = LE\n9 = LT\n12 = WITHIN\n14 = RX\n15 = STREQ\n17 = DETECTSQLI\n18 = DETECTXSS",
        "format": "int32",
        "x-enum-varnames": [
          "BEGINSWITH",
          "ENDSWITH",
          "CONTAINS",
          "CONTAINSWORD",
          "STRMATCH",
          "EQ",
          "GE",
          "GT",
          "LE",
          "LT",
          "WITHIN",
          "RX",
          "STREQ",
          "DETECTSQLI",
          "DETECTXSS"
        ]
      },
      "WafRuleSeverityType": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "0 = NOTICE\n1 = WARNING\n2 = CRITICAL",
        "format": "int32",
        "x-enum-varnames": [
          "NOTICE",
          "WARNING",
          "CRITICAL"
        ]
      },
      "WafRuleTransformationType": {
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          16,
          17,
          18,
          19,
          20,
          21
        ],
        "type": "integer",
        "description": "1 = CMDLINE\n2 = COMPRESSWHITESPACE\n3 = CSSDECODE\n4 = HEXENCODE\n5 = HTMLENTITYDECODE\n6 = JSDECODE\n7 = LENGTH\n8 = LOWERCASE\n9 = MD5\n10 = NORMALIZEPATH\n11 = NORMALISEPATH\n12 = NORMALIZEPATHWIN\n13 = NORMALISEPATHWIN\n14 = REMOVECOMMENTS\n15 = REMOVENULLS\n16 = REMOVEWHITESPACE\n17 = REPLACECOMMENTS\n18 = SHA1\n19 = URLDECODE\n20 = URLDECODEUNI\n21 = UTF8TOUNICODE",
        "format": "int32",
        "x-enum-varnames": [
          "CMDLINE",
          "COMPRESSWHITESPACE",
          "CSSDECODE",
          "HEXENCODE",
          "HTMLENTITYDECODE",
          "JSDECODE",
          "LENGTH",
          "LOWERCASE",
          "MD5",
          "NORMALIZEPATH",
          "NORMALISEPATH",
          "NORMALIZEPATHWIN",
          "NORMALISEPATHWIN",
          "REMOVECOMMENTS",
          "REMOVENULLS",
          "REMOVEWHITESPACE",
          "REPLACECOMMENTS",
          "SHA1",
          "URLDECODE",
          "URLDECODEUNI",
          "UTF8TOUNICODE"
        ]
      },
      "WafRulesByPlanModel": {
        "type": "object",
        "properties": {
          "planValue": {
            "type": "integer",
            "format": "int32"
          },
          "planName": {
            "type": "string",
            "nullable": true
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WafRuleMainGroupModel"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WafSupportedValues": {
        "type": "object",
        "properties": {
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "editable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "AccessKey": {
        "type": "apiKey",
        "description": "API key passed through the AccessKey header",
        "name": "AccessKey",
        "in": "header"
      }
    }
  }
}