{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/Name",
  "/properties/Scope"
 ],
 "definitions": {
  "AllowAction": {
   "additionalProperties": false,
   "properties": {
    "CustomRequestHandling": {
     "$ref": "#/definitions/CustomRequestHandling"
    }
   },
   "type": "object"
  },
  "AndStatement": {
   "additionalProperties": false,
   "properties": {
    "Statements": {
     "items": {
      "$ref": "#/definitions/Statement"
     },
     "type": "array"
    }
   },
   "required": [
    "Statements"
   ],
   "type": "object"
  },
  "AsnMatchStatement": {
   "additionalProperties": false,
   "properties": {
    "AsnList": {
     "items": {
      "maximum": 4294967295,
      "minimum": 0,
      "type": "integer"
     },
     "maxItems": 100,
     "minItems": 1,
     "type": "array"
    },
    "ForwardedIPConfig": {
     "$ref": "#/definitions/ForwardedIPConfiguration"
    }
   },
   "type": "object"
  },
  "BlockAction": {
   "additionalProperties": false,
   "properties": {
    "CustomResponse": {
     "$ref": "#/definitions/CustomResponse"
    }
   },
   "type": "object"
  },
  "Body": {
   "additionalProperties": false,
   "properties": {
    "OversizeHandling": {
     "$ref": "#/definitions/OversizeHandling"
    }
   },
   "type": "object"
  },
  "BodyParsingFallbackBehavior": {
   "enum": [
    "MATCH",
    "NO_MATCH",
    "EVALUATE_AS_STRING"
   ],
   "type": "string"
  },
  "ByteMatchStatement": {
   "additionalProperties": false,
   "properties": {
    "FieldToMatch": {
     "$ref": "#/definitions/FieldToMatch"
    },
    "PositionalConstraint": {
     "$ref": "#/definitions/PositionalConstraint"
    },
    "SearchString": {
     "$ref": "#/definitions/SearchString"
    },
    "SearchStringBase64": {
     "$ref": "#/definitions/SearchStringBase64"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "FieldToMatch",
    "PositionalConstraint",
    "TextTransformations"
   ],
   "type": "object"
  },
  "CaptchaAction": {
   "additionalProperties": false,
   "properties": {
    "CustomRequestHandling": {
     "$ref": "#/definitions/CustomRequestHandling"
    }
   },
   "type": "object"
  },
  "CaptchaConfig": {
   "additionalProperties": false,
   "properties": {
    "ImmunityTimeProperty": {
     "$ref": "#/definitions/ImmunityTimeProperty"
    }
   },
   "type": "object"
  },
  "ChallengeAction": {
   "additionalProperties": false,
   "properties": {
    "CustomRequestHandling": {
     "$ref": "#/definitions/CustomRequestHandling"
    }
   },
   "type": "object"
  },
  "ChallengeConfig": {
   "additionalProperties": false,
   "properties": {
    "ImmunityTimeProperty": {
     "$ref": "#/definitions/ImmunityTimeProperty"
    }
   },
   "type": "object"
  },
  "CookieMatchPattern": {
   "additionalProperties": false,
   "properties": {
    "All": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    },
    "ExcludedCookies": {
     "items": {
      "maxLength": 60,
      "minLength": 1,
      "pattern": ".*\\S.*",
      "type": "string"
     },
     "maxItems": 199,
     "minItems": 1,
     "type": "array"
    },
    "IncludedCookies": {
     "items": {
      "maxLength": 60,
      "minLength": 1,
      "pattern": ".*\\S.*",
      "type": "string"
     },
     "maxItems": 199,
     "minItems": 1,
     "type": "array"
    }
   },
   "type": "object"
  },
  "Cookies": {
   "additionalProperties": false,
   "properties": {
    "MatchPattern": {
     "$ref": "#/definitions/CookieMatchPattern"
    },
    "MatchScope": {
     "$ref": "#/definitions/MapMatchScope"
    },
    "OversizeHandling": {
     "$ref": "#/definitions/OversizeHandling"
    }
   },
   "required": [
    "MatchPattern",
    "MatchScope",
    "OversizeHandling"
   ],
   "type": "object"
  },
  "CountAction": {
   "additionalProperties": false,
   "properties": {
    "CustomRequestHandling": {
     "$ref": "#/definitions/CustomRequestHandling"
    }
   },
   "type": "object"
  },
  "CustomHTTPHeader": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "$ref": "#/definitions/CustomHTTPHeaderName"
    },
    "Value": {
     "$ref": "#/definitions/CustomHTTPHeaderValue"
    }
   },
   "required": [
    "Name",
    "Value"
   ],
   "type": "object"
  },
  "CustomHTTPHeaderName": {
   "maxLength": 64,
   "minLength": 1,
   "pattern": "^[a-zA-Z0-9._$-]+$",
   "type": "string"
  },
  "CustomHTTPHeaderValue": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "CustomRequestHandling": {
   "additionalProperties": false,
   "properties": {
    "InsertHeaders": {
     "items": {
      "$ref": "#/definitions/CustomHTTPHeader"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "InsertHeaders"
   ],
   "type": "object"
  },
  "CustomResponse": {
   "additionalProperties": false,
   "properties": {
    "CustomResponseBodyKey": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^[\\w\\-]+$",
     "type": "string"
    },
    "ResponseCode": {
     "$ref": "#/definitions/ResponseStatusCode"
    },
    "ResponseHeaders": {
     "items": {
      "$ref": "#/definitions/CustomHTTPHeader"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "ResponseCode"
   ],
   "type": "object"
  },
  "CustomResponseBodies": {
   "additionalProperties": false,
   "minProperties": 1,
   "patternProperties": {
    "^[\\w\\-]+$": {
     "$ref": "#/definitions/CustomResponseBody"
    }
   },
   "type": "object"
  },
  "CustomResponseBody": {
   "additionalProperties": false,
   "properties": {
    "Content": {
     "$ref": "#/definitions/ResponseContent"
    },
    "ContentType": {
     "$ref": "#/definitions/ResponseContentType"
    }
   },
   "required": [
    "ContentType",
    "Content"
   ],
   "type": "object"
  },
  "EntityDescription": {
   "pattern": "^[a-zA-Z0-9=:#@/\\-,.][a-zA-Z0-9+=:#@/\\-,.\\s]+[a-zA-Z0-9+=:#@/\\-,.]{1,256}$",
   "type": "string"
  },
  "EntityId": {
   "pattern": "^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$",
   "type": "string"
  },
  "EntityName": {
   "pattern": "^[0-9A-Za-z_-]{1,128}$",
   "type": "string"
  },
  "EvaluationWindowSec": {
   "enum": [
    60,
    120,
    300,
    600
   ],
   "type": "integer"
  },
  "FieldToMatch": {
   "additionalProperties": false,
   "properties": {
    "AllQueryArguments": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    },
    "Body": {
     "$ref": "#/definitions/Body"
    },
    "Cookies": {
     "$ref": "#/definitions/Cookies"
    },
    "HeaderOrder": {
     "$ref": "#/definitions/HeaderOrder"
    },
    "Headers": {
     "$ref": "#/definitions/Headers"
    },
    "JA3Fingerprint": {
     "$ref": "#/definitions/JA3Fingerprint"
    },
    "JA4Fingerprint": {
     "$ref": "#/definitions/JA4Fingerprint"
    },
    "JsonBody": {
     "$ref": "#/definitions/JsonBody"
    },
    "Method": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    },
    "QueryString": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    },
    "SingleHeader": {
     "additionalProperties": false,
     "properties": {
      "Name": {
       "maxLength": 64,
       "minLength": 1,
       "pattern": "\\S",
       "type": "string"
      }
     },
     "required": [
      "Name"
     ],
     "type": "object"
    },
    "SingleQueryArgument": {
     "additionalProperties": false,
     "properties": {
      "Name": {
       "maxLength": 64,
       "minLength": 1,
       "pattern": "\\S",
       "type": "string"
      }
     },
     "required": [
      "Name"
     ],
     "type": "object"
    },
    "UriFragment": {
     "$ref": "#/definitions/UriFragment"
    },
    "UriPath": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    }
   },
   "type": "object"
  },
  "ForwardedIPConfiguration": {
   "additionalProperties": false,
   "properties": {
    "FallbackBehavior": {
     "enum": [
      "MATCH",
      "NO_MATCH"
     ],
     "type": "string"
    },
    "HeaderName": {
     "pattern": "^[a-zA-Z0-9-]{1,255}$",
     "type": "string"
    }
   },
   "required": [
    "HeaderName",
    "FallbackBehavior"
   ],
   "type": "object"
  },
  "GeoMatchStatement": {
   "additionalProperties": false,
   "properties": {
    "CountryCodes": {
     "items": {
      "enum": [
       "AD",
       "AE",
       "AF",
       "AG",
       "AI",
       "AL",
       "AM",
       "AO",
       "AQ",
       "AR",
       "AS",
       "AT",
       "AU",
       "AW",
       "AX",
       "AZ",
       "BA",
       "BB",
       "BD",
       "BE",
       "BF",
       "BG",
       "BH",
       "BI",
       "BJ",
       "BL",
       "BM",
       "BN",
       "BO",
       "BQ",
       "BR",
       "BS",
       "BT",
       "BV",
       "BW",
       "BY",
       "BZ",
       "CA",
       "CC",
       "CD",
       "CF",
       "CG",
       "CH",
       "CI",
       "CK",
       "CL",
       "CM",
       "CN",
       "CO",
       "CR",
       "CU",
       "CV",
       "CW",
       "CX",
       "CY",
       "CZ",
       "DE",
       "DJ",
       "DK",
       "DM",
       "DO",
       "DZ",
       "EC",
       "EE",
       "EG",
       "EH",
       "ER",
       "ES",
       "ET",
       "FI",
       "FJ",
       "FK",
       "FM",
       "FO",
       "FR",
       "GA",
       "GB",
       "GD",
       "GE",
       "GF",
       "GG",
       "GH",
       "GI",
       "GL",
       "GM",
       "GN",
       "GP",
       "GQ",
       "GR",
       "GS",
       "GT",
       "GU",
       "GW",
       "GY",
       "HK",
       "HM",
       "HN",
       "HR",
       "HT",
       "HU",
       "ID",
       "IE",
       "IL",
       "IM",
       "IN",
       "IO",
       "IQ",
       "IR",
       "IS",
       "IT",
       "JE",
       "JM",
       "JO",
       "JP",
       "KE",
       "KG",
       "KH",
       "KI",
       "KM",
       "KN",
       "KP",
       "KR",
       "KW",
       "KY",
       "KZ",
       "LA",
       "LB",
       "LC",
       "LI",
       "LK",
       "LR",
       "LS",
       "LT",
       "LU",
       "LV",
       "LY",
       "MA",
       "MC",
       "MD",
       "ME",
       "MF",
       "MG",
       "MH",
       "MK",
       "ML",
       "MM",
       "MN",
       "MO",
       "MP",
       "MQ",
       "MR",
       "MS",
       "MT",
       "MU",
       "MV",
       "MW",
       "MX",
       "MY",
       "MZ",
       "NA",
       "NC",
       "NE",
       "NF",
       "NG",
       "NI",
       "NL",
       "NO",
       "NP",
       "NR",
       "NU",
       "NZ",
       "OM",
       "PA",
       "PE",
       "PF",
       "PG",
       "PH",
       "PK",
       "PL",
       "PM",
       "PN",
       "PR",
       "PS",
       "PT",
       "PW",
       "PY",
       "QA",
       "RE",
       "RO",
       "RS",
       "RU",
       "RW",
       "SA",
       "SB",
       "SC",
       "SD",
       "SE",
       "SG",
       "SH",
       "SI",
       "SJ",
       "SK",
       "SL",
       "SM",
       "SN",
       "SO",
       "SR",
       "SS",
       "ST",
       "SV",
       "SX",
       "SY",
       "SZ",
       "TC",
       "TD",
       "TF",
       "TG",
       "TH",
       "TJ",
       "TK",
       "TL",
       "TM",
       "TN",
       "TO",
       "TR",
       "TT",
       "TV",
       "TW",
       "TZ",
       "UA",
       "UG",
       "UM",
       "US",
       "UY",
       "UZ",
       "VA",
       "VC",
       "VE",
       "VG",
       "VI",
       "VN",
       "VU",
       "WF",
       "WS",
       "XK",
       "YE",
       "YT",
       "ZA",
       "ZM",
       "ZW"
      ],
      "maxLength": 2,
      "minLength": 1,
      "type": "string"
     },
     "minItems": 1,
     "type": "array"
    },
    "ForwardedIPConfig": {
     "$ref": "#/definitions/ForwardedIPConfiguration"
    }
   },
   "type": "object"
  },
  "HeaderMatchPattern": {
   "additionalProperties": false,
   "properties": {
    "All": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    },
    "ExcludedHeaders": {
     "items": {
      "maxLength": 64,
      "minLength": 1,
      "pattern": ".*\\S.*",
      "type": "string"
     },
     "maxItems": 199,
     "minItems": 1,
     "type": "array"
    },
    "IncludedHeaders": {
     "items": {
      "maxLength": 64,
      "minLength": 1,
      "pattern": ".*\\S.*",
      "type": "string"
     },
     "maxItems": 199,
     "minItems": 1,
     "type": "array"
    }
   },
   "type": "object"
  },
  "HeaderOrder": {
   "additionalProperties": false,
   "properties": {
    "OversizeHandling": {
     "$ref": "#/definitions/OversizeHandling"
    }
   },
   "required": [
    "OversizeHandling"
   ],
   "type": "object"
  },
  "Headers": {
   "additionalProperties": false,
   "properties": {
    "MatchPattern": {
     "$ref": "#/definitions/HeaderMatchPattern"
    },
    "MatchScope": {
     "$ref": "#/definitions/MapMatchScope"
    },
    "OversizeHandling": {
     "$ref": "#/definitions/OversizeHandling"
    }
   },
   "required": [
    "MatchPattern",
    "MatchScope",
    "OversizeHandling"
   ],
   "type": "object"
  },
  "IPSetForwardedIPConfiguration": {
   "additionalProperties": false,
   "properties": {
    "FallbackBehavior": {
     "enum": [
      "MATCH",
      "NO_MATCH"
     ],
     "type": "string"
    },
    "HeaderName": {
     "pattern": "^[a-zA-Z0-9-]{1,255}$",
     "type": "string"
    },
    "Position": {
     "enum": [
      "FIRST",
      "LAST",
      "ANY"
     ],
     "type": "string"
    }
   },
   "required": [
    "HeaderName",
    "FallbackBehavior",
    "Position"
   ],
   "type": "object"
  },
  "IPSetReferenceStatement": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "$ref": "#/definitions/ResourceArn"
    },
    "IPSetForwardedIPConfig": {
     "$ref": "#/definitions/IPSetForwardedIPConfiguration"
    }
   },
   "required": [
    "Arn"
   ],
   "type": "object"
  },
  "ImmunityTimeProperty": {
   "additionalProperties": false,
   "properties": {
    "ImmunityTime": {
     "maximum": 259200,
     "minimum": 60,
     "type": "integer"
    }
   },
   "required": [
    "ImmunityTime"
   ],
   "type": "object"
  },
  "JA3Fingerprint": {
   "additionalProperties": false,
   "properties": {
    "FallbackBehavior": {
     "enum": [
      "MATCH",
      "NO_MATCH"
     ],
     "type": "string"
    }
   },
   "required": [
    "FallbackBehavior"
   ],
   "type": "object"
  },
  "JA4Fingerprint": {
   "additionalProperties": false,
   "properties": {
    "FallbackBehavior": {
     "enum": [
      "MATCH",
      "NO_MATCH"
     ],
     "type": "string"
    }
   },
   "required": [
    "FallbackBehavior"
   ],
   "type": "object"
  },
  "JsonBody": {
   "additionalProperties": false,
   "properties": {
    "InvalidFallbackBehavior": {
     "$ref": "#/definitions/BodyParsingFallbackBehavior"
    },
    "MatchPattern": {
     "$ref": "#/definitions/JsonMatchPattern"
    },
    "MatchScope": {
     "$ref": "#/definitions/JsonMatchScope"
    },
    "OversizeHandling": {
     "$ref": "#/definitions/OversizeHandling"
    }
   },
   "required": [
    "MatchPattern",
    "MatchScope"
   ],
   "type": "object"
  },
  "JsonMatchPattern": {
   "additionalProperties": false,
   "properties": {
    "All": {
     "format": "json",
     "type": [
      "object",
      "string"
     ]
    },
    "IncludedPaths": {
     "items": {
      "$ref": "#/definitions/JsonPointerPath"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "type": "object"
  },
  "JsonMatchScope": {
   "enum": [
    "ALL",
    "KEY",
    "VALUE"
   ],
   "type": "string"
  },
  "JsonPointerPath": {
   "pattern": "^[\\/]+([^~]*(~[01])*){1,512}$",
   "type": "string"
  },
  "Label": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "$ref": "#/definitions/LabelName"
    }
   },
   "required": [
    "Name"
   ],
   "type": "object"
  },
  "LabelMatchKey": {
   "pattern": "^[0-9A-Za-z_:-]{1,1024}$",
   "type": "string"
  },
  "LabelMatchScope": {
   "enum": [
    "LABEL",
    "NAMESPACE"
   ],
   "type": "string"
  },
  "LabelMatchStatement": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "$ref": "#/definitions/LabelMatchKey"
    },
    "Scope": {
     "$ref": "#/definitions/LabelMatchScope"
    }
   },
   "required": [
    "Scope",
    "Key"
   ],
   "type": "object"
  },
  "LabelName": {
   "pattern": "^[0-9A-Za-z_:-]{1,1024}$",
   "type": "string"
  },
  "LabelSummary": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "$ref": "#/definitions/LabelName"
    }
   },
   "type": "object"
  },
  "MapMatchScope": {
   "enum": [
    "ALL",
    "KEY",
    "VALUE"
   ],
   "type": "string"
  },
  "NotStatement": {
   "additionalProperties": false,
   "properties": {
    "Statement": {
     "$ref": "#/definitions/Statement"
    }
   },
   "required": [
    "Statement"
   ],
   "type": "object"
  },
  "OrStatement": {
   "additionalProperties": false,
   "properties": {
    "Statements": {
     "items": {
      "$ref": "#/definitions/Statement"
     },
     "type": "array"
    }
   },
   "required": [
    "Statements"
   ],
   "type": "object"
  },
  "OversizeHandling": {
   "enum": [
    "CONTINUE",
    "MATCH",
    "NO_MATCH"
   ],
   "type": "string"
  },
  "PositionalConstraint": {
   "enum": [
    "EXACTLY",
    "STARTS_WITH",
    "ENDS_WITH",
    "CONTAINS",
    "CONTAINS_WORD"
   ],
   "type": "string"
  },
  "RateBasedStatement": {
   "additionalProperties": false,
   "properties": {
    "AggregateKeyType": {
     "enum": [
      "IP",
      "FORWARDED_IP",
      "CONSTANT",
      "CUSTOM_KEYS"
     ],
     "type": "string"
    },
    "CustomKeys": {
     "items": {
      "$ref": "#/definitions/RateBasedStatementCustomKey"
     },
     "maxItems": 5,
     "minItems": 0,
     "type": "array"
    },
    "EvaluationWindowSec": {
     "$ref": "#/definitions/EvaluationWindowSec"
    },
    "ForwardedIPConfig": {
     "$ref": "#/definitions/ForwardedIPConfiguration"
    },
    "Limit": {
     "$ref": "#/definitions/RateLimit"
    },
    "ScopeDownStatement": {
     "$ref": "#/definitions/Statement"
    }
   },
   "required": [
    "Limit",
    "AggregateKeyType"
   ],
   "type": "object"
  },
  "RateBasedStatementCustomKey": {
   "additionalProperties": false,
   "properties": {
    "ASN": {
     "$ref": "#/definitions/RateLimitAsn"
    },
    "Cookie": {
     "$ref": "#/definitions/RateLimitCookie"
    },
    "ForwardedIP": {
     "$ref": "#/definitions/RateLimitForwardedIP"
    },
    "HTTPMethod": {
     "$ref": "#/definitions/RateLimitHTTPMethod"
    },
    "Header": {
     "$ref": "#/definitions/RateLimitHeader"
    },
    "IP": {
     "$ref": "#/definitions/RateLimitIP"
    },
    "JA3Fingerprint": {
     "$ref": "#/definitions/RateLimitJA3Fingerprint"
    },
    "JA4Fingerprint": {
     "$ref": "#/definitions/RateLimitJA4Fingerprint"
    },
    "LabelNamespace": {
     "$ref": "#/definitions/RateLimitLabelNamespace"
    },
    "QueryArgument": {
     "$ref": "#/definitions/RateLimitQueryArgument"
    },
    "QueryString": {
     "$ref": "#/definitions/RateLimitQueryString"
    },
    "UriPath": {
     "$ref": "#/definitions/RateLimitUriPath"
    }
   },
   "type": "object"
  },
  "RateLimit": {
   "maximum": 2000000000,
   "minimum": 10,
   "type": "integer"
  },
  "RateLimitAsn": {
   "type": "object"
  },
  "RateLimitCookie": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "maxLength": 64,
     "minLength": 1,
     "pattern": ".*\\S.*",
     "type": "string"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "Name",
    "TextTransformations"
   ],
   "type": "object"
  },
  "RateLimitForwardedIP": {
   "format": "json",
   "type": [
    "object",
    "string"
   ]
  },
  "RateLimitHTTPMethod": {
   "format": "json",
   "type": [
    "object",
    "string"
   ]
  },
  "RateLimitHeader": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "maxLength": 64,
     "minLength": 1,
     "pattern": ".*\\S.*",
     "type": "string"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "Name",
    "TextTransformations"
   ],
   "type": "object"
  },
  "RateLimitIP": {
   "format": "json",
   "type": [
    "object",
    "string"
   ]
  },
  "RateLimitJA3Fingerprint": {
   "additionalProperties": false,
   "properties": {
    "FallbackBehavior": {
     "enum": [
      "MATCH",
      "NO_MATCH"
     ],
     "type": "string"
    }
   },
   "required": [
    "FallbackBehavior"
   ],
   "type": "object"
  },
  "RateLimitJA4Fingerprint": {
   "additionalProperties": false,
   "properties": {
    "FallbackBehavior": {
     "enum": [
      "MATCH",
      "NO_MATCH"
     ],
     "type": "string"
    }
   },
   "required": [
    "FallbackBehavior"
   ],
   "type": "object"
  },
  "RateLimitLabelNamespace": {
   "additionalProperties": false,
   "properties": {
    "Namespace": {
     "pattern": "^[0-9A-Za-z_:-]{1,1024}$",
     "type": "string"
    }
   },
   "required": [
    "Namespace"
   ],
   "type": "object"
  },
  "RateLimitQueryArgument": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "maxLength": 64,
     "minLength": 1,
     "pattern": ".*\\S.*",
     "type": "string"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "Name",
    "TextTransformations"
   ],
   "type": "object"
  },
  "RateLimitQueryString": {
   "additionalProperties": false,
   "properties": {
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "TextTransformations"
   ],
   "type": "object"
  },
  "RateLimitUriPath": {
   "additionalProperties": false,
   "properties": {
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "TextTransformations"
   ],
   "type": "object"
  },
  "RegexMatchStatement": {
   "additionalProperties": false,
   "properties": {
    "FieldToMatch": {
     "$ref": "#/definitions/FieldToMatch"
    },
    "RegexString": {
     "maxLength": 512,
     "minLength": 1,
     "type": "string"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "RegexString",
    "FieldToMatch",
    "TextTransformations"
   ],
   "type": "object"
  },
  "RegexPatternSetReferenceStatement": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "$ref": "#/definitions/ResourceArn"
    },
    "FieldToMatch": {
     "$ref": "#/definitions/FieldToMatch"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "Arn",
    "FieldToMatch",
    "TextTransformations"
   ],
   "type": "object"
  },
  "ResourceArn": {
   "maxLength": 2048,
   "minLength": 20,
   "pattern": "\\S",
   "type": "string"
  },
  "ResponseContent": {
   "maxLength": 10240,
   "minLength": 1,
   "type": "string"
  },
  "ResponseContentType": {
   "enum": [
    "TEXT_PLAIN",
    "TEXT_HTML",
    "APPLICATION_JSON"
   ],
   "type": "string"
  },
  "ResponseStatusCode": {
   "maximum": 599,
   "minimum": 200,
   "type": "integer"
  },
  "Rule": {
   "additionalProperties": false,
   "properties": {
    "Action": {
     "$ref": "#/definitions/RuleAction"
    },
    "CaptchaConfig": {
     "$ref": "#/definitions/CaptchaConfig"
    },
    "ChallengeConfig": {
     "$ref": "#/definitions/ChallengeConfig"
    },
    "Name": {
     "$ref": "#/definitions/EntityName"
    },
    "Priority": {
     "$ref": "#/definitions/RulePriority"
    },
    "RuleLabels": {
     "items": {
      "$ref": "#/definitions/Label"
     },
     "type": "array"
    },
    "Statement": {
     "$ref": "#/definitions/Statement"
    },
    "VisibilityConfig": {
     "$ref": "#/definitions/VisibilityConfig"
    }
   },
   "required": [
    "Name",
    "Priority",
    "Statement",
    "VisibilityConfig"
   ],
   "type": "object"
  },
  "RuleAction": {
   "additionalProperties": false,
   "properties": {
    "Allow": {
     "$ref": "#/definitions/AllowAction"
    },
    "Block": {
     "$ref": "#/definitions/BlockAction"
    },
    "Captcha": {
     "$ref": "#/definitions/CaptchaAction"
    },
    "Challenge": {
     "$ref": "#/definitions/ChallengeAction"
    },
    "Count": {
     "$ref": "#/definitions/CountAction"
    }
   },
   "type": "object"
  },
  "RuleGroup": {
   "additionalProperties": false,
   "properties": {
    "Arn": {
     "$ref": "#/definitions/ResourceArn"
    },
    "Capacity": {
     "minimum": 0,
     "type": "integer"
    },
    "Description": {
     "$ref": "#/definitions/EntityDescription"
    },
    "Id": {
     "$ref": "#/definitions/EntityId"
    },
    "Name": {
     "$ref": "#/definitions/EntityName"
    },
    "Rules": {
     "items": {
      "$ref": "#/definitions/Rule"
     },
     "type": "array"
    },
    "VisibilityConfig": {
     "$ref": "#/definitions/VisibilityConfig"
    }
   },
   "type": "object"
  },
  "RulePriority": {
   "minimum": 0,
   "type": "integer"
  },
  "Scope": {
   "enum": [
    "CLOUDFRONT",
    "REGIONAL"
   ],
   "type": "string"
  },
  "SearchString": {
   "type": "string"
  },
  "SearchStringBase64": {
   "type": "string"
  },
  "SensitivityLevel": {
   "enum": [
    "LOW",
    "HIGH"
   ],
   "type": "string"
  },
  "SizeConstraintStatement": {
   "additionalProperties": false,
   "properties": {
    "ComparisonOperator": {
     "enum": [
      "EQ",
      "NE",
      "LE",
      "LT",
      "GE",
      "GT"
     ],
     "type": "string"
    },
    "FieldToMatch": {
     "$ref": "#/definitions/FieldToMatch"
    },
    "Size": {
     "maximum": 21474836480,
     "minimum": 0,
     "type": "number"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "FieldToMatch",
    "ComparisonOperator",
    "Size",
    "TextTransformations"
   ],
   "type": "object"
  },
  "SqliMatchStatement": {
   "additionalProperties": false,
   "properties": {
    "FieldToMatch": {
     "$ref": "#/definitions/FieldToMatch"
    },
    "SensitivityLevel": {
     "$ref": "#/definitions/SensitivityLevel"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "FieldToMatch",
    "TextTransformations"
   ],
   "type": "object"
  },
  "Statement": {
   "additionalProperties": false,
   "properties": {
    "AndStatement": {
     "$ref": "#/definitions/AndStatement"
    },
    "AsnMatchStatement": {
     "$ref": "#/definitions/AsnMatchStatement"
    },
    "ByteMatchStatement": {
     "$ref": "#/definitions/ByteMatchStatement"
    },
    "GeoMatchStatement": {
     "$ref": "#/definitions/GeoMatchStatement"
    },
    "IPSetReferenceStatement": {
     "$ref": "#/definitions/IPSetReferenceStatement"
    },
    "LabelMatchStatement": {
     "$ref": "#/definitions/LabelMatchStatement"
    },
    "NotStatement": {
     "$ref": "#/definitions/NotStatement"
    },
    "OrStatement": {
     "$ref": "#/definitions/OrStatement"
    },
    "RateBasedStatement": {
     "$ref": "#/definitions/RateBasedStatement"
    },
    "RegexMatchStatement": {
     "$ref": "#/definitions/RegexMatchStatement"
    },
    "RegexPatternSetReferenceStatement": {
     "$ref": "#/definitions/RegexPatternSetReferenceStatement"
    },
    "SizeConstraintStatement": {
     "$ref": "#/definitions/SizeConstraintStatement"
    },
    "SqliMatchStatement": {
     "$ref": "#/definitions/SqliMatchStatement"
    },
    "XssMatchStatement": {
     "$ref": "#/definitions/XssMatchStatement"
    }
   },
   "type": "object"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    },
    "Value": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    }
   },
   "type": "object"
  },
  "TextTransformation": {
   "additionalProperties": false,
   "properties": {
    "Priority": {
     "$ref": "#/definitions/TextTransformationPriority"
    },
    "Type": {
     "$ref": "#/definitions/TextTransformationType"
    }
   },
   "required": [
    "Priority",
    "Type"
   ],
   "type": "object"
  },
  "TextTransformationPriority": {
   "minimum": 0,
   "type": "integer"
  },
  "TextTransformationType": {
   "enum": [
    "NONE",
    "COMPRESS_WHITE_SPACE",
    "HTML_ENTITY_DECODE",
    "LOWERCASE",
    "CMD_LINE",
    "URL_DECODE",
    "BASE64_DECODE",
    "HEX_DECODE",
    "MD5",
    "REPLACE_COMMENTS",
    "ESCAPE_SEQ_DECODE",
    "SQL_HEX_DECODE",
    "CSS_DECODE",
    "JS_DECODE",
    "NORMALIZE_PATH",
    "NORMALIZE_PATH_WIN",
    "REMOVE_NULLS",
    "REPLACE_NULLS",
    "BASE64_DECODE_EXT",
    "URL_DECODE_UNI",
    "UTF8_TO_UNICODE"
   ],
   "type": "string"
  },
  "UriFragment": {
   "additionalProperties": false,
   "properties": {
    "FallbackBehavior": {
     "enum": [
      "MATCH",
      "NO_MATCH"
     ],
     "type": "string"
    }
   },
   "type": "object"
  },
  "VisibilityConfig": {
   "additionalProperties": false,
   "properties": {
    "CloudWatchMetricsEnabled": {
     "type": "boolean"
    },
    "MetricName": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^[\\w#:\\.\\-/]+$",
     "type": "string"
    },
    "SampledRequestsEnabled": {
     "type": "boolean"
    }
   },
   "required": [
    "SampledRequestsEnabled",
    "CloudWatchMetricsEnabled",
    "MetricName"
   ],
   "type": "object"
  },
  "XssMatchStatement": {
   "additionalProperties": false,
   "properties": {
    "FieldToMatch": {
     "$ref": "#/definitions/FieldToMatch"
    },
    "TextTransformations": {
     "items": {
      "$ref": "#/definitions/TextTransformation"
     },
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "FieldToMatch",
    "TextTransformations"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Name",
  "/properties/Id",
  "/properties/Scope"
 ],
 "properties": {
  "Arn": {
   "$ref": "#/definitions/ResourceArn"
  },
  "AvailableLabels": {
   "items": {
    "$ref": "#/definitions/LabelSummary"
   },
   "type": "array"
  },
  "Capacity": {
   "minimum": 0,
   "type": "integer"
  },
  "ConsumedLabels": {
   "items": {
    "$ref": "#/definitions/LabelSummary"
   },
   "type": "array"
  },
  "CustomResponseBodies": {
   "$ref": "#/definitions/CustomResponseBodies"
  },
  "Description": {
   "$ref": "#/definitions/EntityDescription"
  },
  "Id": {
   "$ref": "#/definitions/EntityId"
  },
  "LabelNamespace": {
   "$ref": "#/definitions/LabelName"
  },
  "Name": {
   "$ref": "#/definitions/EntityName"
  },
  "Rules": {
   "items": {
    "$ref": "#/definitions/Rule"
   },
   "type": "array"
  },
  "Scope": {
   "$ref": "#/definitions/Scope"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "minItems": 1,
   "type": "array"
  },
  "VisibilityConfig": {
   "$ref": "#/definitions/VisibilityConfig"
  }
 },
 "readOnlyProperties": [
  "/properties/Arn",
  "/properties/Id",
  "/properties/LabelNamespace",
  "/properties/AvailableLabels/*/Name",
  "/properties/ConsumedLabels/*/Name"
 ],
 "required": [
  "Capacity",
  "Scope",
  "VisibilityConfig"
 ],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-wafv2.git",
 "tagging": {
  "cloudFormationSystemTags": true,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": true,
  "taggable": true
 },
 "typeName": "AWS::WAFv2::RuleGroup"
}
