{
  "Name": "apdev-uri-body-rule",
  "Priority": 1,
  "Statement": {
    "OrStatement": {
      "Statements": [
        {
          "AndStatement": {
            "Statements": [
              {
                "ByteMatchStatement": {
                  "SearchString": "/v1/user",
                  "FieldToMatch": {
                    "UriPath": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "POST",
                  "FieldToMatch": {
                    "Method": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "NotStatement": {
                  "Statement": {
                    "RegexMatchStatement": {
                      "RegexString": "^\\\\s*\\\\{\\\\s*(\\"(requestid|uuid|username|email|status_message)\\"\\\\s*:\\\\s*[^,}]+\\\\s*,?\\\\s*){5}\\\\}\\\\s*$",
                      "FieldToMatch": {
                        "Body": {
                          "OversizeHandling": "CONTINUE"
                        }
                      },
                      "TextTransformations": [
                        {
                          "Priority": 0,
                          "Type": "COMPRESS_WHITE_SPACE"
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        },
        {
          "AndStatement": {
            "Statements": [
              {
                "ByteMatchStatement": {
                  "SearchString": "/v1/product",
                  "FieldToMatch": {
                    "UriPath": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "POST",
                  "FieldToMatch": {
                    "Method": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "NotStatement": {
                  "Statement": {
                    "RegexMatchStatement": {
                      "RegexString": "^\\\\s*\\\\{\\\\s*(\\"(requestid|uuid|id|name|price)\\"\\\\s*:\\\\s*[^,}]+\\\\s*,?\\\\s*){5}\\\\}\\\\s*$",
                      "FieldToMatch": {
                        "Body": {
                          "OversizeHandling": "CONTINUE"
                        }
                      },
                      "TextTransformations": [
                        {
                          "Priority": 0,
                          "Type": "COMPRESS_WHITE_SPACE"
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        },
        {
          "AndStatement": {
            "Statements": [
              {
                "ByteMatchStatement": {
                  "SearchString": "/v1/stress",
                  "FieldToMatch": {
                    "UriPath": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "POST",
                  "FieldToMatch": {
                    "Method": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "NotStatement": {
                  "Statement": {
                    "RegexMatchStatement": {
                      "RegexString": "^\\\\s*\\\\{\\\\s*(\\"(requestid|uuid|length)\\"\\\\s*:\\\\s*[^,}]+\\\\s*,?\\\\s*){3}\\\\}\\\\s*$",
                      "FieldToMatch": {
                        "Body": {
                          "OversizeHandling": "CONTINUE"
                        }
                      },
                      "TextTransformations": [
                        {
                          "Priority": 0,
                          "Type": "COMPRESS_WHITE_SPACE"
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        },
        {
          "AndStatement": {
            "Statements": [
              {
                "ByteMatchStatement": {
                  "SearchString": "/v1/user",
                  "FieldToMatch": {
                    "UriPath": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "GET",
                  "FieldToMatch": {
                    "Method": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "NotStatement": {
                  "Statement": {
                    "RegexMatchStatement": {
                      "RegexString": "^((email|requestid|uuid)=[^&]+(&(email|requestid|uuid)=[^&]+)*)?$",
                      "FieldToMatch": {
                        "QueryString": {}
                      },
                      "TextTransformations": [
                        {
                          "Priority": 0,
                          "Type": "URL_DECODE"
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        },
        {
          "AndStatement": {
            "Statements": [
              {
                "ByteMatchStatement": {
                  "SearchString": "/v1/product",
                  "FieldToMatch": {
                    "UriPath": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "GET",
                  "FieldToMatch": {
                    "Method": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "EXACTLY"
                }
              },
              {
                "NotStatement": {
                  "Statement": {
                    "RegexMatchStatement": {
                      "RegexString": "^((id|requestid|uuid)=[^&]+(&(id|requestid|uuid)=[^&]+)*)?$",
                      "FieldToMatch": {
                        "QueryString": {}
                      },
                      "TextTransformations": [
                        {
                          "Priority": 0,
                          "Type": "URL_DECODE"
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "apdev-uri-body-rule"
  }
}