import * as core from "@terrascript/core"; export interface CustomResponseBodyArgs extends core.SchemaArgs { content: string | core.StringOut; contentType: string | core.StringOut; key: string | core.StringOut; } export class CustomResponseBody extends core.Schema { @core.attr(String) public content!: string | core.StringOut; @core.attr(String) public contentType!: string | core.StringOut; @core.attr(String) public key!: string | core.StringOut; } export interface BodyArgs extends core.SchemaArgs {} export class Body extends core.Schema {} export interface MethodArgs extends core.SchemaArgs {} export class Method extends core.Schema {} export interface QueryStringArgs extends core.SchemaArgs {} export class QueryString extends core.Schema {} export interface SingleHeaderArgs extends core.SchemaArgs { name: string | core.StringOut; } export class SingleHeader extends core.Schema { @core.attr(String) public name!: string | core.StringOut; } export interface SingleQueryArgumentArgs extends core.SchemaArgs { name: string | core.StringOut; } export class SingleQueryArgument extends core.Schema { @core.attr(String) public name!: string | core.StringOut; } export interface UriPathArgs extends core.SchemaArgs {} export class UriPath extends core.Schema {} export interface AllQueryArgumentsArgs extends core.SchemaArgs {} export class AllQueryArguments extends core.Schema {} export interface FieldToMatchArgs extends core.SchemaArgs { allQueryArguments?: AllQueryArguments; body?: Body; method?: Method; queryString?: QueryString; singleHeader?: SingleHeader; singleQueryArgument?: SingleQueryArgument; uriPath?: UriPath; } export class FieldToMatch extends core.Schema { @core.attr(AllQueryArguments) public allQueryArguments?: AllQueryArguments; @core.attr(Body) public body?: Body; @core.attr(Method) public method?: Method; @core.attr(QueryString) public queryString?: QueryString; @core.attr(SingleHeader) public singleHeader?: SingleHeader; @core.attr(SingleQueryArgument) public singleQueryArgument?: SingleQueryArgument; @core.attr(UriPath) public uriPath?: UriPath; } export interface TextTransformationArgs extends core.SchemaArgs { priority: number | core.NumberOut; type: string | core.StringOut; } export class TextTransformation extends core.Schema { @core.attr(Number) public priority!: number | core.NumberOut; @core.attr(String) public type!: string | core.StringOut; } export interface SqliMatchStatementArgs extends core.SchemaArgs { fieldToMatch?: FieldToMatch; textTransformation: | core.Array | core.ArrayOut; } export class SqliMatchStatement extends core.Schema { @core.attr(FieldToMatch) public fieldToMatch?: FieldToMatch; @core.attr(TextTransformation, { kind: "array" }) public textTransformation!: | core.Array | core.ArrayOut; } export interface LabelMatchStatementArgs extends core.SchemaArgs { key: string | core.StringOut; scope: string | core.StringOut; } export class LabelMatchStatement extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public scope!: string | core.StringOut; } export interface ExcludedRuleArgs extends core.SchemaArgs { name: string | core.StringOut; } export class ExcludedRule extends core.Schema { @core.attr(String) public name!: string | core.StringOut; } export interface RuleGroupReferenceStatementArgs extends core.SchemaArgs { arn: string | core.StringOut; excludedRule?: core.Array | core.ArrayOut; } export class RuleGroupReferenceStatement extends core.Schema { @core.attr(String) public arn!: string | core.StringOut; @core.attr(ExcludedRule, { kind: "array" }) public excludedRule?: core.Array | core.ArrayOut; } export interface XssMatchStatementArgs extends core.SchemaArgs { fieldToMatch?: FieldToMatch; textTransformation: | core.Array | core.ArrayOut; } export class XssMatchStatement extends core.Schema { @core.attr(FieldToMatch) public fieldToMatch?: FieldToMatch; @core.attr(TextTransformation, { kind: "array" }) public textTransformation!: | core.Array | core.ArrayOut; } export interface ByteMatchStatementArgs extends core.SchemaArgs { fieldToMatch?: FieldToMatch; positionalConstraint: string | core.StringOut; searchString: string | core.StringOut; textTransformation: | core.Array | core.ArrayOut; } export class ByteMatchStatement extends core.Schema { @core.attr(FieldToMatch) public fieldToMatch?: FieldToMatch; @core.attr(String) public positionalConstraint!: string | core.StringOut; @core.attr(String) public searchString!: string | core.StringOut; @core.attr(TextTransformation, { kind: "array" }) public textTransformation!: | core.Array | core.ArrayOut; } export interface ForwardedIpConfigArgs extends core.SchemaArgs { fallbackBehavior: string | core.StringOut; headerName: string | core.StringOut; } export class ForwardedIpConfig extends core.Schema { @core.attr(String) public fallbackBehavior!: string | core.StringOut; @core.attr(String) public headerName!: string | core.StringOut; } export interface RegexPatternSetReferenceStatementArgs extends core.SchemaArgs { arn: string | core.StringOut; fieldToMatch?: FieldToMatch; textTransformation: | core.Array | core.ArrayOut; } export class RegexPatternSetReferenceStatement extends core.Schema { @core.attr(String) public arn!: string | core.StringOut; @core.attr(FieldToMatch) public fieldToMatch?: FieldToMatch; @core.attr(TextTransformation, { kind: "array" }) public textTransformation!: | core.Array | core.ArrayOut; } export interface SizeConstraintStatementArgs extends core.SchemaArgs { comparisonOperator: string | core.StringOut; fieldToMatch?: FieldToMatch; size: number | core.NumberOut; textTransformation: | core.Array | core.ArrayOut; } export class SizeConstraintStatement extends core.Schema { @core.attr(String) public comparisonOperator!: string | core.StringOut; @core.attr(FieldToMatch) public fieldToMatch?: FieldToMatch; @core.attr(Number) public size!: number | core.NumberOut; @core.attr(TextTransformation, { kind: "array" }) public textTransformation!: | core.Array | core.ArrayOut; } export interface IpSetForwardedIpConfigArgs extends core.SchemaArgs { fallbackBehavior: string | core.StringOut; headerName: string | core.StringOut; position: string | core.StringOut; } export class IpSetForwardedIpConfig extends core.Schema { @core.attr(String) public fallbackBehavior!: string | core.StringOut; @core.attr(String) public headerName!: string | core.StringOut; @core.attr(String) public position!: string | core.StringOut; } export interface IpSetReferenceStatementArgs extends core.SchemaArgs { arn: string | core.StringOut; ipSetForwardedIpConfig?: IpSetForwardedIpConfig; } export class IpSetReferenceStatement extends core.Schema { @core.attr(String) public arn!: string | core.StringOut; @core.attr(IpSetForwardedIpConfig) public ipSetForwardedIpConfig?: IpSetForwardedIpConfig; } export interface GeoMatchStatementArgs extends core.SchemaArgs { countryCodes: core.Array | core.ArrayOut; forwardedIpConfig?: ForwardedIpConfig; } export class GeoMatchStatement extends core.Schema { @core.attr(String, { kind: "array" }) public countryCodes!: core.Array | core.ArrayOut; @core.attr(ForwardedIpConfig) public forwardedIpConfig?: ForwardedIpConfig; } export interface ScopeDownStatementAndStatementStatementNotStatementStatementArgs extends core.SchemaArgs { byteMatchStatement?: ByteMatchStatement; geoMatchStatement?: GeoMatchStatement; ipSetReferenceStatement?: IpSetReferenceStatement; labelMatchStatement?: LabelMatchStatement; regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; sizeConstraintStatement?: SizeConstraintStatement; sqliMatchStatement?: SqliMatchStatement; xssMatchStatement?: XssMatchStatement; } export class ScopeDownStatementAndStatementStatementNotStatementStatement extends core.Schema { @core.attr(ByteMatchStatement) public byteMatchStatement?: ByteMatchStatement; @core.attr(GeoMatchStatement) public geoMatchStatement?: GeoMatchStatement; @core.attr(IpSetReferenceStatement) public ipSetReferenceStatement?: IpSetReferenceStatement; @core.attr(LabelMatchStatement) public labelMatchStatement?: LabelMatchStatement; @core.attr(RegexPatternSetReferenceStatement) public regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; @core.attr(SizeConstraintStatement) public sizeConstraintStatement?: SizeConstraintStatement; @core.attr(SqliMatchStatement) public sqliMatchStatement?: SqliMatchStatement; @core.attr(XssMatchStatement) public xssMatchStatement?: XssMatchStatement; } export interface ScopeDownStatementAndStatementStatementNotStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class ScopeDownStatementAndStatementStatementNotStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatementStatementNotStatementStatement, { kind: "array", }) public statement!: | core.Array | core.ArrayOut; } export interface ScopeDownStatementAndStatementStatementAndStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class ScopeDownStatementAndStatementStatementAndStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatementStatementNotStatementStatement, { kind: "array", }) public statement!: | core.Array | core.ArrayOut; } export interface ScopeDownStatementAndStatementStatementOrStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class ScopeDownStatementAndStatementStatementOrStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatementStatementNotStatementStatement, { kind: "array", }) public statement!: | core.Array | core.ArrayOut; } export interface ScopeDownStatementAndStatementStatementArgs extends core.SchemaArgs { andStatement?: ScopeDownStatementAndStatementStatementAndStatement; byteMatchStatement?: ByteMatchStatement; geoMatchStatement?: GeoMatchStatement; ipSetReferenceStatement?: IpSetReferenceStatement; labelMatchStatement?: LabelMatchStatement; notStatement?: ScopeDownStatementAndStatementStatementNotStatement; orStatement?: ScopeDownStatementAndStatementStatementOrStatement; regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; sizeConstraintStatement?: SizeConstraintStatement; sqliMatchStatement?: SqliMatchStatement; xssMatchStatement?: XssMatchStatement; } export class ScopeDownStatementAndStatementStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatementStatementAndStatement) public andStatement?: ScopeDownStatementAndStatementStatementAndStatement; @core.attr(ByteMatchStatement) public byteMatchStatement?: ByteMatchStatement; @core.attr(GeoMatchStatement) public geoMatchStatement?: GeoMatchStatement; @core.attr(IpSetReferenceStatement) public ipSetReferenceStatement?: IpSetReferenceStatement; @core.attr(LabelMatchStatement) public labelMatchStatement?: LabelMatchStatement; @core.attr(ScopeDownStatementAndStatementStatementNotStatement) public notStatement?: ScopeDownStatementAndStatementStatementNotStatement; @core.attr(ScopeDownStatementAndStatementStatementOrStatement) public orStatement?: ScopeDownStatementAndStatementStatementOrStatement; @core.attr(RegexPatternSetReferenceStatement) public regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; @core.attr(SizeConstraintStatement) public sizeConstraintStatement?: SizeConstraintStatement; @core.attr(SqliMatchStatement) public sqliMatchStatement?: SqliMatchStatement; @core.attr(XssMatchStatement) public xssMatchStatement?: XssMatchStatement; } export interface ScopeDownStatementAndStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class ScopeDownStatementAndStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatementStatement, { kind: "array" }) public statement!: | core.Array | core.ArrayOut; } export interface ScopeDownStatementNotStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class ScopeDownStatementNotStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatementStatement, { kind: "array" }) public statement!: | core.Array | core.ArrayOut; } export interface ScopeDownStatementOrStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class ScopeDownStatementOrStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatementStatement, { kind: "array" }) public statement!: | core.Array | core.ArrayOut; } export interface ScopeDownStatementArgs extends core.SchemaArgs { andStatement?: ScopeDownStatementAndStatement; byteMatchStatement?: ByteMatchStatement; geoMatchStatement?: GeoMatchStatement; ipSetReferenceStatement?: IpSetReferenceStatement; labelMatchStatement?: LabelMatchStatement; notStatement?: ScopeDownStatementNotStatement; orStatement?: ScopeDownStatementOrStatement; regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; sizeConstraintStatement?: SizeConstraintStatement; sqliMatchStatement?: SqliMatchStatement; xssMatchStatement?: XssMatchStatement; } export class ScopeDownStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatement) public andStatement?: ScopeDownStatementAndStatement; @core.attr(ByteMatchStatement) public byteMatchStatement?: ByteMatchStatement; @core.attr(GeoMatchStatement) public geoMatchStatement?: GeoMatchStatement; @core.attr(IpSetReferenceStatement) public ipSetReferenceStatement?: IpSetReferenceStatement; @core.attr(LabelMatchStatement) public labelMatchStatement?: LabelMatchStatement; @core.attr(ScopeDownStatementNotStatement) public notStatement?: ScopeDownStatementNotStatement; @core.attr(ScopeDownStatementOrStatement) public orStatement?: ScopeDownStatementOrStatement; @core.attr(RegexPatternSetReferenceStatement) public regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; @core.attr(SizeConstraintStatement) public sizeConstraintStatement?: SizeConstraintStatement; @core.attr(SqliMatchStatement) public sqliMatchStatement?: SqliMatchStatement; @core.attr(XssMatchStatement) public xssMatchStatement?: XssMatchStatement; } export interface RateBasedStatementArgs extends core.SchemaArgs { aggregateKeyType?: string | core.StringOut; forwardedIpConfig?: ForwardedIpConfig; limit: number | core.NumberOut; scopeDownStatement?: ScopeDownStatement; } export class RateBasedStatement extends core.Schema { @core.attr(String) public aggregateKeyType?: string | core.StringOut; @core.attr(ForwardedIpConfig) public forwardedIpConfig?: ForwardedIpConfig; @core.attr(Number) public limit!: number | core.NumberOut; @core.attr(ScopeDownStatement) public scopeDownStatement?: ScopeDownStatement; } export interface RuleStatementOrStatementStatementArgs extends core.SchemaArgs { andStatement?: ScopeDownStatementAndStatement; byteMatchStatement?: ByteMatchStatement; geoMatchStatement?: GeoMatchStatement; ipSetReferenceStatement?: IpSetReferenceStatement; labelMatchStatement?: LabelMatchStatement; notStatement?: ScopeDownStatementNotStatement; orStatement?: ScopeDownStatementOrStatement; regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; sizeConstraintStatement?: SizeConstraintStatement; sqliMatchStatement?: SqliMatchStatement; xssMatchStatement?: XssMatchStatement; } export class RuleStatementOrStatementStatement extends core.Schema { @core.attr(ScopeDownStatementAndStatement) public andStatement?: ScopeDownStatementAndStatement; @core.attr(ByteMatchStatement) public byteMatchStatement?: ByteMatchStatement; @core.attr(GeoMatchStatement) public geoMatchStatement?: GeoMatchStatement; @core.attr(IpSetReferenceStatement) public ipSetReferenceStatement?: IpSetReferenceStatement; @core.attr(LabelMatchStatement) public labelMatchStatement?: LabelMatchStatement; @core.attr(ScopeDownStatementNotStatement) public notStatement?: ScopeDownStatementNotStatement; @core.attr(ScopeDownStatementOrStatement) public orStatement?: ScopeDownStatementOrStatement; @core.attr(RegexPatternSetReferenceStatement) public regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; @core.attr(SizeConstraintStatement) public sizeConstraintStatement?: SizeConstraintStatement; @core.attr(SqliMatchStatement) public sqliMatchStatement?: SqliMatchStatement; @core.attr(XssMatchStatement) public xssMatchStatement?: XssMatchStatement; } export interface RuleStatementOrStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class RuleStatementOrStatement extends core.Schema { @core.attr(RuleStatementOrStatementStatement, { kind: "array" }) public statement!: | core.Array | core.ArrayOut; } export interface RuleStatementAndStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class RuleStatementAndStatement extends core.Schema { @core.attr(RuleStatementOrStatementStatement, { kind: "array" }) public statement!: | core.Array | core.ArrayOut; } export interface ManagedRuleGroupStatementArgs extends core.SchemaArgs { excludedRule?: core.Array | core.ArrayOut; name: string | core.StringOut; scopeDownStatement?: ScopeDownStatement; vendorName: string | core.StringOut; version?: string | core.StringOut; } export class ManagedRuleGroupStatement extends core.Schema { @core.attr(ExcludedRule, { kind: "array" }) public excludedRule?: core.Array | core.ArrayOut; @core.attr(String) public name!: string | core.StringOut; @core.attr(ScopeDownStatement) public scopeDownStatement?: ScopeDownStatement; @core.attr(String) public vendorName!: string | core.StringOut; @core.attr(String) public version?: string | core.StringOut; } export interface RuleStatementNotStatementArgs extends core.SchemaArgs { statement: | core.Array | core.ArrayOut; } export class RuleStatementNotStatement extends core.Schema { @core.attr(RuleStatementOrStatementStatement, { kind: "array" }) public statement!: | core.Array | core.ArrayOut; } export interface RuleStatementArgs extends core.SchemaArgs { andStatement?: RuleStatementAndStatement; byteMatchStatement?: ByteMatchStatement; geoMatchStatement?: GeoMatchStatement; ipSetReferenceStatement?: IpSetReferenceStatement; labelMatchStatement?: LabelMatchStatement; managedRuleGroupStatement?: ManagedRuleGroupStatement; notStatement?: RuleStatementNotStatement; orStatement?: RuleStatementOrStatement; rateBasedStatement?: RateBasedStatement; regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; ruleGroupReferenceStatement?: RuleGroupReferenceStatement; sizeConstraintStatement?: SizeConstraintStatement; sqliMatchStatement?: SqliMatchStatement; xssMatchStatement?: XssMatchStatement; } export class RuleStatement extends core.Schema { @core.attr(RuleStatementAndStatement) public andStatement?: RuleStatementAndStatement; @core.attr(ByteMatchStatement) public byteMatchStatement?: ByteMatchStatement; @core.attr(GeoMatchStatement) public geoMatchStatement?: GeoMatchStatement; @core.attr(IpSetReferenceStatement) public ipSetReferenceStatement?: IpSetReferenceStatement; @core.attr(LabelMatchStatement) public labelMatchStatement?: LabelMatchStatement; @core.attr(ManagedRuleGroupStatement) public managedRuleGroupStatement?: ManagedRuleGroupStatement; @core.attr(RuleStatementNotStatement) public notStatement?: RuleStatementNotStatement; @core.attr(RuleStatementOrStatement) public orStatement?: RuleStatementOrStatement; @core.attr(RateBasedStatement) public rateBasedStatement?: RateBasedStatement; @core.attr(RegexPatternSetReferenceStatement) public regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement; @core.attr(RuleGroupReferenceStatement) public ruleGroupReferenceStatement?: RuleGroupReferenceStatement; @core.attr(SizeConstraintStatement) public sizeConstraintStatement?: SizeConstraintStatement; @core.attr(SqliMatchStatement) public sqliMatchStatement?: SqliMatchStatement; @core.attr(XssMatchStatement) public xssMatchStatement?: XssMatchStatement; } export interface VisibilityConfigArgs extends core.SchemaArgs { cloudwatchMetricsEnabled: boolean | core.BooleanOut; metricName: string | core.StringOut; sampledRequestsEnabled: boolean | core.BooleanOut; } export class VisibilityConfig extends core.Schema { @core.attr(Boolean) public cloudwatchMetricsEnabled!: boolean | core.BooleanOut; @core.attr(String) public metricName!: string | core.StringOut; @core.attr(Boolean) public sampledRequestsEnabled!: boolean | core.BooleanOut; } export interface ResponseHeaderArgs extends core.SchemaArgs { name: string | core.StringOut; value: string | core.StringOut; } export class ResponseHeader extends core.Schema { @core.attr(String) public name!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface CustomResponseArgs extends core.SchemaArgs { customResponseBodyKey?: string | core.StringOut; responseCode: number | core.NumberOut; responseHeader?: core.Array | core.ArrayOut; } export class CustomResponse extends core.Schema { @core.attr(String) public customResponseBodyKey?: string | core.StringOut; @core.attr(Number) public responseCode!: number | core.NumberOut; @core.attr(ResponseHeader, { kind: "array" }) public responseHeader?: | core.Array | core.ArrayOut; } export interface BlockArgs extends core.SchemaArgs { customResponse?: CustomResponse; } export class Block extends core.Schema { @core.attr(CustomResponse) public customResponse?: CustomResponse; } export interface InsertHeaderArgs extends core.SchemaArgs { name: string | core.StringOut; value: string | core.StringOut; } export class InsertHeader extends core.Schema { @core.attr(String) public name!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface CustomRequestHandlingArgs extends core.SchemaArgs { insertHeader: core.Array | core.ArrayOut; } export class CustomRequestHandling extends core.Schema { @core.attr(InsertHeader, { kind: "array" }) public insertHeader!: core.Array | core.ArrayOut; } export interface CaptchaArgs extends core.SchemaArgs { customRequestHandling?: CustomRequestHandling; } export class Captcha extends core.Schema { @core.attr(CustomRequestHandling) public customRequestHandling?: CustomRequestHandling; } export interface ActionCountArgs extends core.SchemaArgs { customRequestHandling?: CustomRequestHandling; } export class ActionCount extends core.Schema { @core.attr(CustomRequestHandling) public customRequestHandling?: CustomRequestHandling; } export interface AllowArgs extends core.SchemaArgs { customRequestHandling?: CustomRequestHandling; } export class Allow extends core.Schema { @core.attr(CustomRequestHandling) public customRequestHandling?: CustomRequestHandling; } export interface ActionArgs extends core.SchemaArgs { allow?: Allow; block?: Block; captcha?: Captcha; count?: ActionCount; } export class Action extends core.Schema { @core.attr(Allow) public allow?: Allow; @core.attr(Block) public block?: Block; @core.attr(Captcha) public captcha?: Captcha; @core.attr(ActionCount) public count?: ActionCount; } export interface OverrideActionCountArgs extends core.SchemaArgs {} export class OverrideActionCount extends core.Schema {} export interface NoneArgs extends core.SchemaArgs {} export class None extends core.Schema {} export interface OverrideActionArgs extends core.SchemaArgs { count?: OverrideActionCount; none?: None; } export class OverrideAction extends core.Schema { @core.attr(OverrideActionCount) public count?: OverrideActionCount; @core.attr(None) public none?: None; } export interface RuleLabelArgs extends core.SchemaArgs { name: string | core.StringOut; } export class RuleLabel extends core.Schema { @core.attr(String) public name!: string | core.StringOut; } export interface RuleArgs extends core.SchemaArgs { action?: Action; name: string | core.StringOut; overrideAction?: OverrideAction; priority: number | core.NumberOut; ruleLabel?: core.Array | core.ArrayOut; statement: RuleStatement; visibilityConfig: VisibilityConfig; } export class Rule extends core.Schema { @core.attr(Action) public action?: Action; @core.attr(String) public name!: string | core.StringOut; @core.attr(OverrideAction) public overrideAction?: OverrideAction; @core.attr(Number) public priority!: number | core.NumberOut; @core.attr(RuleLabel, { kind: "array" }) public ruleLabel?: core.Array | core.ArrayOut; @core.attr(RuleStatement) public statement!: RuleStatement; @core.attr(VisibilityConfig) public visibilityConfig!: VisibilityConfig; } export interface DefaultActionArgs extends core.SchemaArgs { allow?: Allow; block?: Block; } export class DefaultAction extends core.Schema { @core.attr(Allow) public allow?: Allow; @core.attr(Block) public block?: Block; } export interface V2WebAclArgs extends core.ResourceArgs { /** * (Optional) Defines custom response bodies that can be referenced by `custom_response` actions. See [ * Custom Response Body](#custom-response-body) below for details. */ customResponseBody?: | core.Array | core.ArrayOut; /** * (Required) Action to perform if none of the `rules` contained in the WebACL match. See [Default Acti * on](#default-action) below for details. */ defaultAction: DefaultAction; /** * (Optional) Friendly description of the WebACL. */ description?: string | core.StringOut; /** * (Required) Friendly name of the WebACL. */ name: string | core.StringOut; /** * (Optional) Rule blocks used to identify the web requests that you want to `allow`, `block`, or `coun * t`. See [Rules](#rules) below for details. */ rule?: core.Array | core.ArrayOut; /** * (Required) Specifies whether this is for an AWS CloudFront distribution or for a regional applicatio * n. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the r * egion `us-east-1` (N. Virginia) on the AWS provider. */ scope: string | core.StringOut; /** * (Optional) Map of key-value pairs to associate with the resource. If configured with a provider [`de * fault_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#d * efault_tags-configuration-block) present, tags with matching keys will overwrite those defined at th * e provider-level. */ tags?: core.Map | core.MapOut; /** * Map of tags assigned to the resource, including those inherited from the provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Required) Defines and enables Amazon CloudWatch metrics and web request sample collection. See [Vis * ibility Configuration](#visibility-configuration) below for details. */ visibilityConfig: VisibilityConfig; } export class V2WebAcl extends core.Resource { /** * (Required) The Amazon Resource Name (ARN) of the IP Set that this statement references. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * Web ACL capacity units (WCUs) currently being used by this web ACL. */ @core.attr(Number, { computed: true }) public capacity!: number | core.NumberOut; /** * (Optional) Defines custom response bodies that can be referenced by `custom_response` actions. See [ * Custom Response Body](#custom-response-body) below for details. */ @core.attr(CustomResponseBody, { kind: "array" }) public customResponseBody?: | core.Array | core.ArrayOut; /** * (Required) Action to perform if none of the `rules` contained in the WebACL match. See [Default Acti * on](#default-action) below for details. */ @core.attr(DefaultAction) public defaultAction!: DefaultAction; /** * (Optional) Friendly description of the WebACL. */ @core.attr(String) public description?: string | core.StringOut; /** * The ID of the WAF WebACL. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; @core.attr(String, { computed: true }) public lockToken!: string | core.StringOut; /** * (Required) Friendly name of the WebACL. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) Rule blocks used to identify the web requests that you want to `allow`, `block`, or `coun * t`. See [Rules](#rules) below for details. */ @core.attr(Rule, { kind: "array" }) public rule?: core.Array | core.ArrayOut; /** * (Required) Specifies whether this is for an AWS CloudFront distribution or for a regional applicatio * n. Valid values are `CLOUDFRONT` or `REGIONAL`. To work with CloudFront, you must also specify the r * egion `us-east-1` (N. Virginia) on the AWS provider. */ @core.attr(String) public scope!: string | core.StringOut; /** * (Optional) Map of key-value pairs to associate with the resource. If configured with a provider [`de * fault_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#d * efault_tags-configuration-block) present, tags with matching keys will overwrite those defined at th * e provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * Map of tags assigned to the resource, including those inherited from the provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Required) Defines and enables Amazon CloudWatch metrics and web request sample collection. See [Vis * ibility Configuration](#visibility-configuration) below for details. */ @core.attr(VisibilityConfig) public visibilityConfig!: VisibilityConfig; constructor(name: string, args?: V2WebAclArgs) { super(name, "aws_wafv2_web_acl", args); } public override getNamespace(): string { return "aws_waf"; } }