Chilkat Online Tools

GetRuleGroup Objective-C Example

AWS WAFV2

#import <CkoRest.h>
#import <CkoAuthAws.h>
#import <CkoJsonObject.h>
#import <CkoStringBuilder.h>
#import <NSString.h>

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

CkoRest *rest = [[CkoRest alloc] init];
BOOL success;

CkoAuthAws *authAws = [[CkoAuthAws alloc] init];
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];

// URL: https://wafv2.us-west-2.amazonaws.com/
// Use the same region as specified above.
success = [rest Connect: @"wafv2.us-west-2.amazonaws.com" port: [NSNumber numberWithInt: 443] tls: YES autoReconnect: YES];
if (success != YES) {
    NSLog(@"%@%d",@"ConnectFailReason: ",[rest.ConnectFailReason intValue]);
    NSLog(@"%@",rest.LastErrorText);
    return;
}

// 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

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"ARN" value: @"string"];
[json UpdateString: @"Id" value: @"string"];
[json UpdateString: @"Name" value: @"string"];
[json UpdateString: @"Scope" value: @"string"];

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

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

[rest AddHeader: @"Content-Type" value: @"application/x-amz-json-1.1"];
[rest AddHeader: @"X-Amz-Target" value: @"AWSWAF_20190729.GetRuleGroup"];

CkoStringBuilder *sbRequestBody = [[CkoStringBuilder alloc] init];
[json EmitSb: sbRequestBody];
CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
success = [rest FullRequestSb: @"POST" uriPath: @"/" requestBody: sbRequestBody responseBody: sbResponseBody];
if (success != YES) {
    NSLog(@"%@",rest.LastErrorText);
    return;
}

int respStatusCode = [rest.ResponseStatusCode intValue];
NSLog(@"%@%d",@"response status code = ",respStatusCode);
if (respStatusCode != 200) {
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",rest.ResponseHeader);
    NSLog(@"%@",@"Response Body:");
    NSLog(@"%@",[sbResponseBody GetAsString]);
    return;
}

CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbResponseBody];

// 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

NSString *CustomResponseBodyKey = 0;
int ResponseCode;
int ImmunityTime;
int Priority;
NSString *OversizeHandling = 0;
NSString *MatchScope = 0;
NSString *CookiesOversizeHandling = 0;
NSString *HeadersMatchScope = 0;
NSString *HeadersOversizeHandling = 0;
NSString *InvalidFallbackBehavior = 0;
NSString *JsonBodyMatchScope = 0;
NSString *JsonBodyOversizeHandling = 0;
NSString *SingleHeaderName = 0;
NSString *SingleQueryArgumentName = 0;
NSString *PositionalConstraint = 0;
int SearchString;
NSString *FallbackBehavior = 0;
NSString *HeaderName = 0;
NSString *IPSetReferenceStatementARN = 0;
NSString *IPSetForwardedIPConfigFallbackBehavior = 0;
NSString *IPSetForwardedIPConfigHeaderName = 0;
NSString *Position = 0;
NSString *Key = 0;
NSString *Scope = 0;
NSString *ManagedRuleGroupStatementName = 0;
NSString *ScopeDownStatement = 0;
NSString *VendorName = 0;
NSString *Version = 0;
NSString *Statement = 0;
NSString *AggregateKeyType = 0;
NSString *ForwardedIPConfigFallbackBehavior = 0;
NSString *ForwardedIPConfigHeaderName = 0;
int Limit;
NSString *RateBasedStatementScopeDownStatement = 0;
NSString *BodyOversizeHandling = 0;
NSString *CookiesMatchScope = 0;
NSString *JsonBodyInvalidFallbackBehavior = 0;
NSString *RegexString = 0;
NSString *RegexPatternSetReferenceStatementARN = 0;
NSString *RuleGroupReferenceStatementARN = 0;
NSString *ComparisonOperator = 0;
int Size;
int VisibilityConfigCloudWatchMetricsEnabled;
NSString *VisibilityConfigMetricName = 0;
int VisibilityConfigSampledRequestsEnabled;
int j;
int count_j;
NSString *Value = 0;
NSString *strVal = 0;
NSString *v_Type = 0;
NSString *LoginPath = 0;
NSString *Identifier = 0;
NSString *PayloadType = 0;
NSString *UsernameFieldIdentifier = 0;

NSString *LockToken = [jResp StringOf: @"LockToken"];
NSString *ARN = [jResp StringOf: @"RuleGroup.ARN"];
int Capacity = [[jResp IntOf: @"RuleGroup.Capacity"] intValue];
NSString *Content = [jResp StringOf: @"RuleGroup.CustomResponseBodies.string.Content"];
NSString *ContentType = [jResp StringOf: @"RuleGroup.CustomResponseBodies.string.ContentType"];
NSString *Description = [jResp StringOf: @"RuleGroup.Description"];
NSString *Id = [jResp StringOf: @"RuleGroup.Id"];
NSString *LabelNamespace = [jResp StringOf: @"RuleGroup.LabelNamespace"];
NSString *Name = [jResp StringOf: @"RuleGroup.Name"];
int CloudWatchMetricsEnabled = [[jResp IntOf: @"RuleGroup.VisibilityConfig.CloudWatchMetricsEnabled"] intValue];
NSString *MetricName = [jResp StringOf: @"RuleGroup.VisibilityConfig.MetricName"];
int SampledRequestsEnabled = [[jResp IntOf: @"RuleGroup.VisibilityConfig.SampledRequestsEnabled"] intValue];
int i = 0;
int count_i = [[jResp SizeOfArray: @"RuleGroup.AvailableLabels"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    Name = [jResp StringOf: @"RuleGroup.AvailableLabels[i].Name"];
    i = i + 1;
}

i = 0;
count_i = [[jResp SizeOfArray: @"RuleGroup.ConsumedLabels"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    Name = [jResp StringOf: @"RuleGroup.ConsumedLabels[i].Name"];
    i = i + 1;
}

i = 0;
count_i = [[jResp SizeOfArray: @"RuleGroup.Rules"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    CustomResponseBodyKey = [jResp StringOf: @"RuleGroup.Rules[i].Action.Block.CustomResponse.CustomResponseBodyKey"];
    ResponseCode = [[jResp IntOf: @"RuleGroup.Rules[i].Action.Block.CustomResponse.ResponseCode"] intValue];
    ImmunityTime = [[jResp IntOf: @"RuleGroup.Rules[i].CaptchaConfig.ImmunityTimeProperty.ImmunityTime"] intValue];
    Name = [jResp StringOf: @"RuleGroup.Rules[i].Name"];
    Priority = [[jResp IntOf: @"RuleGroup.Rules[i].Priority"] intValue];
    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"] intValue];
    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"] intValue];
    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"] intValue];
    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"] intValue];
    VisibilityConfigMetricName = [jResp StringOf: @"RuleGroup.Rules[i].VisibilityConfig.MetricName"];
    VisibilityConfigSampledRequestsEnabled = [[jResp IntOf: @"RuleGroup.Rules[i].VisibilityConfig.SampledRequestsEnabled"] intValue];
    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Action.Allow.CustomRequestHandling.InsertHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: 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;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Action.Block.CustomResponse.ResponseHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: 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;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Action.Captcha.CustomRequestHandling.InsertHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: 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;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Action.Count.CustomRequestHandling.InsertHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: 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;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].OverrideAction.Count.CustomRequestHandling.InsertHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: 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;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].RuleLabels"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Name = [jResp StringOf: @"RuleGroup.Rules[i].RuleLabels[j].Name"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.AndStatement.Statements"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.AndStatement.Statements[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.TextTransformations"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Priority = [[jResp IntOf: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.TextTransformations[j].Priority"] intValue];
        v_Type = [jResp StringOf: @"RuleGroup.Rules[i].Statement.ByteMatchStatement.TextTransformations[j].Type"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.GeoMatchStatement.CountryCodes"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.GeoMatchStatement.CountryCodes[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ExcludedRules"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Name = [jResp StringOf: @"RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ExcludedRules[j].Name"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.ManagedRuleGroupStatement.ManagedRuleGroupConfigs"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: 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;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.OrStatement.Statements"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.OrStatement.Statements[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.TextTransformations"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Priority = [[jResp IntOf: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.TextTransformations[j].Priority"] intValue];
        v_Type = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexMatchStatement.TextTransformations[j].Type"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.TextTransformations"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Priority = [[jResp IntOf: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.TextTransformations[j].Priority"] intValue];
        v_Type = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RegexPatternSetReferenceStatement.TextTransformations[j].Type"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.RuleGroupReferenceStatement.ExcludedRules"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Name = [jResp StringOf: @"RuleGroup.Rules[i].Statement.RuleGroupReferenceStatement.ExcludedRules[j].Name"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.TextTransformations"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Priority = [[jResp IntOf: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.TextTransformations[j].Priority"] intValue];
        v_Type = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SizeConstraintStatement.TextTransformations[j].Type"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.TextTransformations"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Priority = [[jResp IntOf: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.TextTransformations[j].Priority"] intValue];
        v_Type = [jResp StringOf: @"RuleGroup.Rules[i].Statement.SqliMatchStatement.TextTransformations[j].Type"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.ExcludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Cookies.MatchPattern.IncludedCookies[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.ExcludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.Headers.MatchPattern.IncludedHeaders[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        strVal = [jResp StringOf: @"RuleGroup.Rules[i].Statement.XssMatchStatement.FieldToMatch.JsonBody.MatchPattern.IncludedPaths[j]"];
        j = j + 1;
    }

    j = 0;
    count_j = [[jResp SizeOfArray: @"RuleGroup.Rules[i].Statement.XssMatchStatement.TextTransformations"] intValue];
    while (j < count_j) {
        jResp.J = [NSNumber numberWithInt: j];
        Priority = [[jResp IntOf: @"RuleGroup.Rules[i].Statement.XssMatchStatement.TextTransformations[j].Priority"] intValue];
        v_Type = [jResp StringOf: @"RuleGroup.Rules[i].Statement.XssMatchStatement.TextTransformations[j].Type"];
        j = j + 1;
    }

    i = i + 1;
}

// 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
//     }
//   }
// }