Chilkat Online Tools

GetRuleGroup delphiAx Example

AWS WAFV2

var
rest: TChilkatRest;
success: Integer;
authAws: TChilkatAuthAws;
json: TChilkatJsonObject;
sbRequestBody: TChilkatStringBuilder;
sbResponseBody: TChilkatStringBuilder;
respStatusCode: Integer;
jResp: TChilkatJsonObject;
CustomResponseBodyKey: WideString;
ResponseCode: Integer;
ImmunityTime: Integer;
Priority: Integer;
OversizeHandling: WideString;
MatchScope: WideString;
CookiesOversizeHandling: WideString;
HeadersMatchScope: WideString;
HeadersOversizeHandling: WideString;
InvalidFallbackBehavior: WideString;
JsonBodyMatchScope: WideString;
JsonBodyOversizeHandling: WideString;
SingleHeaderName: WideString;
SingleQueryArgumentName: WideString;
PositionalConstraint: WideString;
SearchString: Integer;
FallbackBehavior: WideString;
HeaderName: WideString;
IPSetReferenceStatementARN: WideString;
IPSetForwardedIPConfigFallbackBehavior: WideString;
IPSetForwardedIPConfigHeaderName: WideString;
Position: WideString;
Key: WideString;
Scope: WideString;
ManagedRuleGroupStatementName: WideString;
ScopeDownStatement: WideString;
VendorName: WideString;
Version: WideString;
Statement: WideString;
AggregateKeyType: WideString;
ForwardedIPConfigFallbackBehavior: WideString;
ForwardedIPConfigHeaderName: WideString;
Limit: Integer;
RateBasedStatementScopeDownStatement: WideString;
BodyOversizeHandling: WideString;
CookiesMatchScope: WideString;
JsonBodyInvalidFallbackBehavior: WideString;
RegexString: WideString;
RegexPatternSetReferenceStatementARN: WideString;
RuleGroupReferenceStatementARN: WideString;
ComparisonOperator: WideString;
Size: Integer;
VisibilityConfigCloudWatchMetricsEnabled: Integer;
VisibilityConfigMetricName: WideString;
VisibilityConfigSampledRequestsEnabled: Integer;
j: Integer;
count_j: Integer;
Value: WideString;
strVal: WideString;
v_Type: WideString;
LoginPath: WideString;
Identifier: WideString;
PayloadType: WideString;
UsernameFieldIdentifier: WideString;
LockToken: WideString;
ARN: WideString;
Capacity: Integer;
Content: WideString;
ContentType: WideString;
Description: WideString;
Id: WideString;
LabelNamespace: WideString;
Name: WideString;
CloudWatchMetricsEnabled: Integer;
MetricName: WideString;
SampledRequestsEnabled: Integer;
i: Integer;
count_i: Integer;

begin
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

rest := TChilkatRest.Create(Self);

authAws := TChilkatAuthAws.Create(Self);
authAws.AccessKey := 'AWS_ACCESS_KEY';
authAws.SecretKey := 'AWS_SECRET_KEY';

// Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.)
authAws.Region := 'us-west-2';
authAws.ServiceName := 'wafv2';
// SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
rest.SetAuthAws(authAws.ControlInterface);

// URL: https://wafv2.us-west-2.amazonaws.com/
// Use the same region as specified above.
success := rest.Connect('wafv2.us-west-2.amazonaws.com',443,1,1);
if (success <> 1) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(rest.ConnectFailReason));
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;

// The following code creates the JSON request body.
// The JSON created by this code is shown below.

// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON

json := TChilkatJsonObject.Create(Self);
json.UpdateString('ARN','string');
json.UpdateString('Id','string');
json.UpdateString('Name','string');
json.UpdateString('Scope','string');

// The JSON request body created by the above code:

// {
//   "ARN": "string",
//   "Id": "string",
//   "Name": "string",
//   "Scope": "string"
// }

rest.AddHeader('Content-Type','application/x-amz-json-1.1');
rest.AddHeader('X-Amz-Target','AWSWAF_20190729.GetRuleGroup');

sbRequestBody := TChilkatStringBuilder.Create(Self);
json.EmitSb(sbRequestBody.ControlInterface);
sbResponseBody := TChilkatStringBuilder.Create(Self);
success := rest.FullRequestSb('POST','/',sbRequestBody.ControlInterface,sbResponseBody.ControlInterface);
if (success <> 1) then
  begin
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;
respStatusCode := rest.ResponseStatusCode;
Memo1.Lines.Add('response status code = ' + IntToStr(respStatusCode));
if (respStatusCode <> 200) then
  begin
    Memo1.Lines.Add('Response Header:');
    Memo1.Lines.Add(rest.ResponseHeader);
    Memo1.Lines.Add('Response Body:');
    Memo1.Lines.Add(sbResponseBody.GetAsString());
    Exit;
  end;

jResp := TChilkatJsonObject.Create(Self);
jResp.LoadSb(sbResponseBody.ControlInterface);

// The following code parses the JSON response.
// A sample JSON response is shown below the sample code.

// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON

LockToken := jResp.StringOf('LockToken');
ARN := jResp.StringOf('RuleGroup.ARN');
Capacity := jResp.IntOf('RuleGroup.Capacity');
Content := jResp.StringOf('RuleGroup.CustomResponseBodies.string.Content');
ContentType := jResp.StringOf('RuleGroup.CustomResponseBodies.string.ContentType');
Description := jResp.StringOf('RuleGroup.Description');
Id := jResp.StringOf('RuleGroup.Id');
LabelNamespace := jResp.StringOf('RuleGroup.LabelNamespace');
Name := jResp.StringOf('RuleGroup.Name');
CloudWatchMetricsEnabled := jResp.IntOf('RuleGroup.VisibilityConfig.CloudWatchMetricsEnabled');
MetricName := jResp.StringOf('RuleGroup.VisibilityConfig.MetricName');
SampledRequestsEnabled := jResp.IntOf('RuleGroup.VisibilityConfig.SampledRequestsEnabled');
i := 0;
count_i := jResp.SizeOfArray('RuleGroup.AvailableLabels');
while i < count_i do
  begin
    jResp.I := i;
    Name := jResp.StringOf('RuleGroup.AvailableLabels[i].Name');
    i := i + 1;
  end;

i := 0;
count_i := jResp.SizeOfArray('RuleGroup.ConsumedLabels');
while i < count_i do
  begin
    jResp.I := i;
    Name := jResp.StringOf('RuleGroup.ConsumedLabels[i].Name');
    i := i + 1;
  end;

i := 0;
count_i := jResp.SizeOfArray('RuleGroup.Rules');
while i < count_i do
  begin
    jResp.I := i;
    CustomResponseBodyKey := jResp.StringOf('RuleGroup.Rules[i].Action.Block.CustomResponse.CustomResponseBodyKey');
    ResponseCode := jResp.IntOf('RuleGroup.Rules[i].Action.Block.CustomResponse.ResponseCode');
    ImmunityTime := jResp.IntOf('RuleGroup.Rules[i].CaptchaConfig.ImmunityTimeProperty.ImmunityTime');
    Name := jResp.StringOf('RuleGroup.Rules[i].Name');
    Priority := jResp.IntOf('RuleGroup.Rules[i].Priority');
    OversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Body.OversizeHandling');
    MatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchScope');
    CookiesOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.OversizeHandling');
    HeadersMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchScope');
    HeadersOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.OversizeHandling');
    InvalidFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.JsonBody.InvalidFallbackBehavior');
    JsonBodyMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchScope');
    JsonBodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.JsonBody.OversizeHandling');
    SingleHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.SingleHeader.Name');
    SingleQueryArgumentName := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.SingleQueryArgument.Name');
    PositionalConstraint := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.PositionalConstraint');
    SearchString := jResp.IntOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.SearchString');
    FallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.GeoMatchStatement.ForwardedIPConfig.FallbackBehavior');
    HeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.GeoMatchStatement.ForwardedIPConfig.HeaderName');
    IPSetReferenceStatementARN := jResp.StringOf('RuleGroup.Rules[i].Statement.IPSetReferenceStatement.ARN');
    IPSetForwardedIPConfigFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.IPSetReferenceStatement.IPSetForwardedIPConfig.FallbackBehavior');
    IPSetForwardedIPConfigHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.IPSetReferenceStatement.IPSetForwardedIPConfig.HeaderName');
    Position := jResp.StringOf('RuleGroup.Rules[i].Statement.IPSetReferenceStatement.IPSetForwardedIPConfig.Position');
    Key := jResp.StringOf('RuleGroup.Rules[i].Statement.LabelMatchStatement.Key');
    Scope := jResp.StringOf('RuleGroup.Rules[i].Statement.LabelMatchStatement.Scope');
    ManagedRuleGroupStatementName := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.Name');
    ScopeDownStatement := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ScopeDownStatement');
    VendorName := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.VendorName');
    Version := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.Version');
    Statement := jResp.StringOf('RuleGroup.Rules[i].Statement.NotStatement.Statement');
    AggregateKeyType := jResp.StringOf('RuleGroup.Rules[i].Statement.RateBasedStatement.AggregateKeyType');
    ForwardedIPConfigFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.RateBasedStatement.ForwardedIPConfig.FallbackBehavior');
    ForwardedIPConfigHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.RateBasedStatement.ForwardedIPConfig.HeaderName');
    Limit := jResp.IntOf('RuleGroup.Rules[i].Statement.RateBasedStatement.Limit');
    RateBasedStatementScopeDownStatement := jResp.StringOf('RuleGroup.Rules[i].Statement.RateBasedStatement.ScopeDownStatement');
    BodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Body.OversizeHandling');
    CookiesMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchScope');
    CookiesOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.OversizeHandling');
    HeadersMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchScope');
    HeadersOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.OversizeHandling');
    JsonBodyInvalidFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.JsonBody.InvalidFallbackBehavior');
    JsonBodyMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchScope');
    JsonBodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.JsonBody.OversizeHandling');
    SingleHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.SingleHeader.Name');
    SingleQueryArgumentName := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.SingleQueryArgument.Name');
    RegexString := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.RegexString');
    RegexPatternSetReferenceStatementARN := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.ARN');
    BodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Body.OversizeHandling');
    CookiesMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchScope');
    CookiesOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.OversizeHandling');
    HeadersMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchScope');
    HeadersOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.OversizeHandling');
    JsonBodyInvalidFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.InvalidFallbackBehavior');
    JsonBodyMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchScope');
    JsonBodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.OversizeHandling');
    SingleHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.SingleHeader.Name');
    SingleQueryArgumentName := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.SingleQueryArgument.Name');
    RuleGroupReferenceStatementARN := jResp.StringOf('RuleGroup.Rules[i].Statement.RuleGroupReferenceStatement.ARN');
    ComparisonOperator := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.ComparisonOperator');
    BodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Body.OversizeHandling');
    CookiesMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchScope');
    CookiesOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.OversizeHandling');
    HeadersMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchScope');
    HeadersOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.OversizeHandling');
    JsonBodyInvalidFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.InvalidFallbackBehavior');
    JsonBodyMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchScope');
    JsonBodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.OversizeHandling');
    SingleHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.SingleHeader.Name');
    SingleQueryArgumentName := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.SingleQueryArgument.Name');
    Size := jResp.IntOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.Size');
    BodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Body.OversizeHandling');
    CookiesMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchScope');
    CookiesOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.OversizeHandling');
    HeadersMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchScope');
    HeadersOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.OversizeHandling');
    JsonBodyInvalidFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.JsonBody.InvalidFallbackBehavior');
    JsonBodyMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchScope');
    JsonBodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.JsonBody.OversizeHandling');
    SingleHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.SingleHeader.Name');
    SingleQueryArgumentName := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.SingleQueryArgument.Name');
    BodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Body.OversizeHandling');
    CookiesMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchScope');
    CookiesOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.OversizeHandling');
    HeadersMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchScope');
    HeadersOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.OversizeHandling');
    JsonBodyInvalidFallbackBehavior := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.JsonBody.InvalidFallbackBehavior');
    JsonBodyMatchScope := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchScope');
    JsonBodyOversizeHandling := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.JsonBody.OversizeHandling');
    SingleHeaderName := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.SingleHeader.Name');
    SingleQueryArgumentName := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.SingleQueryArgument.Name');
    VisibilityConfigCloudWatchMetricsEnabled := jResp.IntOf('RuleGroup.Rules[i].VisibilityConfig.CloudWatchMetricsEnabled');
    VisibilityConfigMetricName := jResp.StringOf('RuleGroup.Rules[i].VisibilityConfig.MetricName');
    VisibilityConfigSampledRequestsEnabled := jResp.IntOf('RuleGroup.Rules[i].VisibilityConfig.SampledRequestsEnabled');
    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Action.Allow.CustomRequestHandling.InsertHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].Action.Allow.CustomRequestHandling.InsertHeaders[j].Name');
        Value := jResp.StringOf('RuleGroup.Rules[i].Action.Allow.CustomRequestHandling.InsertHeaders[j].Value');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Action.Block.CustomResponse.ResponseHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].Action.Block.CustomResponse.ResponseHeaders[j].Name');
        Value := jResp.StringOf('RuleGroup.Rules[i].Action.Block.CustomResponse.ResponseHeaders[j].Value');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Action.Captcha.CustomRequestHandling.InsertHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].Action.Captcha.CustomRequestHandling.InsertHeaders[j].Name');
        Value := jResp.StringOf('RuleGroup.Rules[i].Action.Captcha.CustomRequestHandling.InsertHeaders[j].Value');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Action.Count.CustomRequestHandling.InsertHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].Action.Count.CustomRequestHandling.InsertHeaders[j].Name');
        Value := jResp.StringOf('RuleGroup.Rules[i].Action.Count.CustomRequestHandling.InsertHeaders[j].Value');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].OverrideAction.Count.CustomRequestHandling.InsertHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].OverrideAction.Count.CustomRequestHandling.InsertHeaders[j].Name');
        Value := jResp.StringOf('RuleGroup.Rules[i].OverrideAction.Count.CustomRequestHandling.InsertHeaders[j].Value');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].RuleLabels');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].RuleLabels[j].Name');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.AndStatement.Statements');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.AndStatement.Statements[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ByteMatchStatement.TextTransformations');
    while j < count_j do
      begin
        jResp.J := j;
        Priority := jResp.IntOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.TextTransformations[j].Priority');
        v_Type := jResp.StringOf('RuleGroup.Rules[i].Statement.ByteMatchStatement.TextTransformations[j].Type');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.GeoMatchStatement.CountryCodes');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.GeoMatchStatement.CountryCodes[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ExcludedRules');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ExcludedRules[j].Name');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs');
    while j < count_j do
      begin
        jResp.J := j;
        LoginPath := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[j].LoginPath');
        Identifier := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[j].PasswordField.Identifier');
        PayloadType := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[j].PayloadType');
        UsernameFieldIdentifier := jResp.StringOf('RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs[j].UsernameField.Identifier');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.OrStatement.Statements');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.OrStatement.Statements[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexMatchStatement.TextTransformations');
    while j < count_j do
      begin
        jResp.J := j;
        Priority := jResp.IntOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.TextTransformations[j].Priority');
        v_Type := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexMatchStatement.TextTransformations[j].Type');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.TextTransformations');
    while j < count_j do
      begin
        jResp.J := j;
        Priority := jResp.IntOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.TextTransformations[j].Priority');
        v_Type := jResp.StringOf('RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.TextTransformations[j].Type');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.RuleGroupReferenceStatement.ExcludedRules');
    while j < count_j do
      begin
        jResp.J := j;
        Name := jResp.StringOf('RuleGroup.Rules[i].Statement.RuleGroupReferenceStatement.ExcludedRules[j].Name');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SizeConstraintStatement.TextTransformations');
    while j < count_j do
      begin
        jResp.J := j;
        Priority := jResp.IntOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.TextTransformations[j].Priority');
        v_Type := jResp.StringOf('RuleGroup.Rules[i].Statement.SizeConstraintStatement.TextTransformations[j].Type');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.SqliMatchStatement.TextTransformations');
    while j < count_j do
      begin
        jResp.J := j;
        Priority := jResp.IntOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.TextTransformations[j].Priority');
        v_Type := jResp.StringOf('RuleGroup.Rules[i].Statement.SqliMatchStatement.TextTransformations[j].Type');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('RuleGroup.Rules[i].Statement.XssMatchStatement.TextTransformations');
    while j < count_j do
      begin
        jResp.J := j;
        Priority := jResp.IntOf('RuleGroup.Rules[i].Statement.XssMatchStatement.TextTransformations[j].Priority');
        v_Type := jResp.StringOf('RuleGroup.Rules[i].Statement.XssMatchStatement.TextTransformations[j].Type');
        j := j + 1;
      end;

    i := i + 1;
  end;

// A sample JSON response body parsed by the above code:

// {
//   "LockToken": "string",
//   "RuleGroup": {
//     "ARN": "string",
//     "AvailableLabels": [
//       {
//         "Name": "string"
//       }
//     ],
//     "Capacity": number,
//     "ConsumedLabels": [
//       {
//         "Name": "string"
//       }
//     ],
//     "CustomResponseBodies": {
//       "string": {
//         "Content": "string",
//         "ContentType": "string"
//       }
//     },
//     "Description": "string",
//     "Id": "string",
//     "LabelNamespace": "string",
//     "Name": "string",
//     "Rules": [
//       {
//         "Action": {
//           "Allow": {
//             "CustomRequestHandling": {
//               "InsertHeaders": [
//                 {
//                   "Name": "string",
//                   "Value": "string"
//                 }
//               ]
//             }
//           },
//           "Block": {
//             "CustomResponse": {
//               "CustomResponseBodyKey": "string",
//               "ResponseCode": number,
//               "ResponseHeaders": [
//                 {
//                   "Name": "string",
//                   "Value": "string"
//                 }
//               ]
//             }
//           },
//           "Captcha": {
//             "CustomRequestHandling": {
//               "InsertHeaders": [
//                 {
//                   "Name": "string",
//                   "Value": "string"
//                 }
//               ]
//             }
//           },
//           "Count": {
//             "CustomRequestHandling": {
//               "InsertHeaders": [
//                 {
//                   "Name": "string",
//                   "Value": "string"
//                 }
//               ]
//             }
//           }
//         },
//         "CaptchaConfig": {
//           "ImmunityTimeProperty": {
//             "ImmunityTime": number
//           }
//         },
//         "Name": "string",
//         "OverrideAction": {
//           "Count": {
//             "CustomRequestHandling": {
//               "InsertHeaders": [
//                 {
//                   "Name": "string",
//                   "Value": "string"
//                 }
//               ]
//             }
//           },
//           "None": {}
//         },
//         "Priority": number,
//         "RuleLabels": [
//           {
//             "Name": "string"
//           }
//         ],
//         "Statement": {
//           "AndStatement": {
//             "Statements": [
//               "Statement"
//             ]
//           },
//           "ByteMatchStatement": {
//             "FieldToMatch": {
//               "AllQueryArguments": {},
//               "Body": {
//                 "OversizeHandling": "string"
//               },
//               "Cookies": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedCookies": [
//                     "string"
//                   ],
//                   "IncludedCookies": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Headers": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedHeaders": [
//                     "string"
//                   ],
//                   "IncludedHeaders": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "JsonBody": {
//                 "InvalidFallbackBehavior": "string",
//                 "MatchPattern": {
//                   "All": {},
//                   "IncludedPaths": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Method": {},
//               "QueryString": {},
//               "SingleHeader": {
//                 "Name": "string"
//               },
//               "SingleQueryArgument": {
//                 "Name": "string"
//               },
//               "UriPath": {}
//             },
//             "PositionalConstraint": "string",
//             "SearchString": blob,
//             "TextTransformations": [
//               {
//                 "Priority": number,
//                 "Type": "string"
//               }
//             ]
//           },
//           "GeoMatchStatement": {
//             "CountryCodes": [
//               "string"
//             ],
//             "ForwardedIPConfig": {
//               "FallbackBehavior": "string",
//               "HeaderName": "string"
//             }
//           },
//           "IPSetReferenceStatement": {
//             "ARN": "string",
//             "IPSetForwardedIPConfig": {
//               "FallbackBehavior": "string",
//               "HeaderName": "string",
//               "Position": "string"
//             }
//           },
//           "LabelMatchStatement": {
//             "Key": "string",
//             "Scope": "string"
//           },
//           "ManagedRuleGroupStatement": {
//             "ExcludedRules": [
//               {
//                 "Name": "string"
//               }
//             ],
//             "ManagedRuleGroupConfigs": [
//               {
//                 "LoginPath": "string",
//                 "PasswordField": {
//                   "Identifier": "string"
//                 },
//                 "PayloadType": "string",
//                 "UsernameField": {
//                   "Identifier": "string"
//                 }
//               }
//             ],
//             "Name": "string",
//             "ScopeDownStatement": "Statement",
//             "VendorName": "string",
//             "Version": "string"
//           },
//           "NotStatement": {
//             "Statement": "Statement"
//           },
//           "OrStatement": {
//             "Statements": [
//               "Statement"
//             ]
//           },
//           "RateBasedStatement": {
//             "AggregateKeyType": "string",
//             "ForwardedIPConfig": {
//               "FallbackBehavior": "string",
//               "HeaderName": "string"
//             },
//             "Limit": number,
//             "ScopeDownStatement": "Statement"
//           },
//           "RegexMatchStatement": {
//             "FieldToMatch": {
//               "AllQueryArguments": {},
//               "Body": {
//                 "OversizeHandling": "string"
//               },
//               "Cookies": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedCookies": [
//                     "string"
//                   ],
//                   "IncludedCookies": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Headers": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedHeaders": [
//                     "string"
//                   ],
//                   "IncludedHeaders": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "JsonBody": {
//                 "InvalidFallbackBehavior": "string",
//                 "MatchPattern": {
//                   "All": {},
//                   "IncludedPaths": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Method": {},
//               "QueryString": {},
//               "SingleHeader": {
//                 "Name": "string"
//               },
//               "SingleQueryArgument": {
//                 "Name": "string"
//               },
//               "UriPath": {}
//             },
//             "RegexString": "string",
//             "TextTransformations": [
//               {
//                 "Priority": number,
//                 "Type": "string"
//               }
//             ]
//           },
//           "RegexPatternSetReferenceStatement": {
//             "ARN": "string",
//             "FieldToMatch": {
//               "AllQueryArguments": {},
//               "Body": {
//                 "OversizeHandling": "string"
//               },
//               "Cookies": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedCookies": [
//                     "string"
//                   ],
//                   "IncludedCookies": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Headers": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedHeaders": [
//                     "string"
//                   ],
//                   "IncludedHeaders": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "JsonBody": {
//                 "InvalidFallbackBehavior": "string",
//                 "MatchPattern": {
//                   "All": {},
//                   "IncludedPaths": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Method": {},
//               "QueryString": {},
//               "SingleHeader": {
//                 "Name": "string"
//               },
//               "SingleQueryArgument": {
//                 "Name": "string"
//               },
//               "UriPath": {}
//             },
//             "TextTransformations": [
//               {
//                 "Priority": number,
//                 "Type": "string"
//               }
//             ]
//           },
//           "RuleGroupReferenceStatement": {
//             "ARN": "string",
//             "ExcludedRules": [
//               {
//                 "Name": "string"
//               }
//             ]
//           },
//           "SizeConstraintStatement": {
//             "ComparisonOperator": "string",
//             "FieldToMatch": {
//               "AllQueryArguments": {},
//               "Body": {
//                 "OversizeHandling": "string"
//               },
//               "Cookies": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedCookies": [
//                     "string"
//                   ],
//                   "IncludedCookies": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Headers": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedHeaders": [
//                     "string"
//                   ],
//                   "IncludedHeaders": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "JsonBody": {
//                 "InvalidFallbackBehavior": "string",
//                 "MatchPattern": {
//                   "All": {},
//                   "IncludedPaths": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Method": {},
//               "QueryString": {},
//               "SingleHeader": {
//                 "Name": "string"
//               },
//               "SingleQueryArgument": {
//                 "Name": "string"
//               },
//               "UriPath": {}
//             },
//             "Size": number,
//             "TextTransformations": [
//               {
//                 "Priority": number,
//                 "Type": "string"
//               }
//             ]
//           },
//           "SqliMatchStatement": {
//             "FieldToMatch": {
//               "AllQueryArguments": {},
//               "Body": {
//                 "OversizeHandling": "string"
//               },
//               "Cookies": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedCookies": [
//                     "string"
//                   ],
//                   "IncludedCookies": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Headers": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedHeaders": [
//                     "string"
//                   ],
//                   "IncludedHeaders": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "JsonBody": {
//                 "InvalidFallbackBehavior": "string",
//                 "MatchPattern": {
//                   "All": {},
//                   "IncludedPaths": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Method": {},
//               "QueryString": {},
//               "SingleHeader": {
//                 "Name": "string"
//               },
//               "SingleQueryArgument": {
//                 "Name": "string"
//               },
//               "UriPath": {}
//             },
//             "TextTransformations": [
//               {
//                 "Priority": number,
//                 "Type": "string"
//               }
//             ]
//           },
//           "XssMatchStatement": {
//             "FieldToMatch": {
//               "AllQueryArguments": {},
//               "Body": {
//                 "OversizeHandling": "string"
//               },
//               "Cookies": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedCookies": [
//                     "string"
//                   ],
//                   "IncludedCookies": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Headers": {
//                 "MatchPattern": {
//                   "All": {},
//                   "ExcludedHeaders": [
//                     "string"
//                   ],
//                   "IncludedHeaders": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "JsonBody": {
//                 "InvalidFallbackBehavior": "string",
//                 "MatchPattern": {
//                   "All": {},
//                   "IncludedPaths": [
//                     "string"
//                   ]
//                 },
//                 "MatchScope": "string",
//                 "OversizeHandling": "string"
//               },
//               "Method": {},
//               "QueryString": {},
//               "SingleHeader": {
//                 "Name": "string"
//               },
//               "SingleQueryArgument": {
//                 "Name": "string"
//               },
//               "UriPath": {}
//             },
//             "TextTransformations": [
//               {
//                 "Priority": number,
//                 "Type": "string"
//               }
//             ]
//           }
//         },
//         "VisibilityConfig": {
//           "CloudWatchMetricsEnabled": boolean,
//           "MetricName": "string",
//           "SampledRequestsEnabled": boolean
//         }
//       }
//     ],
//     "VisibilityConfig": {
//       "CloudWatchMetricsEnabled": boolean,
//       "MetricName": "string",
//       "SampledRequestsEnabled": boolean
//     }
//   }
// }