import * as core from "@terrascript/core"; export interface AllQueryArgumentsArgs extends core.SchemaArgs {} export class AllQueryArguments extends core.Schema {} 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 RedactedFieldsArgs extends core.SchemaArgs { allQueryArguments?: AllQueryArguments; body?: Body; method?: Method; queryString?: QueryString; singleHeader?: SingleHeader; singleQueryArgument?: SingleQueryArgument; uriPath?: UriPath; } export class RedactedFields 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 ActionConditionArgs extends core.SchemaArgs { action: string | core.StringOut; } export class ActionCondition extends core.Schema { @core.attr(String) public action!: string | core.StringOut; } export interface LabelNameConditionArgs extends core.SchemaArgs { labelName: string | core.StringOut; } export class LabelNameCondition extends core.Schema { @core.attr(String) public labelName!: string | core.StringOut; } export interface ConditionArgs extends core.SchemaArgs { actionCondition?: ActionCondition; labelNameCondition?: LabelNameCondition; } export class Condition extends core.Schema { @core.attr(ActionCondition) public actionCondition?: ActionCondition; @core.attr(LabelNameCondition) public labelNameCondition?: LabelNameCondition; } export interface FilterArgs extends core.SchemaArgs { behavior: string | core.StringOut; condition: core.Array | core.ArrayOut; requirement: string | core.StringOut; } export class Filter extends core.Schema { @core.attr(String) public behavior!: string | core.StringOut; @core.attr(Condition, { kind: "array" }) public condition!: core.Array | core.ArrayOut; @core.attr(String) public requirement!: string | core.StringOut; } export interface LoggingFilterArgs extends core.SchemaArgs { defaultBehavior: string | core.StringOut; filter: core.Array | core.ArrayOut; } export class LoggingFilter extends core.Schema { @core.attr(String) public defaultBehavior!: string | core.StringOut; @core.attr(Filter, { kind: "array" }) public filter!: core.Array | core.ArrayOut; } export interface V2WebAclLoggingConfigurationArgs extends core.ResourceArgs { /** * (Required) The Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource * Names (ARNs) that you want to associate with the web ACL. */ logDestinationConfigs: core.Array | core.ArrayOut; /** * (Optional) A configuration block that specifies which web requests are kept in the logs and which ar * e dropped. You can filter on the rule action and on the web request labels that were applied by matc * hing rules during web ACL evaluation. See [Logging Filter](#logging-filter) below for more details. */ loggingFilter?: LoggingFilter; /** * (Optional) The parts of the request that you want to keep out of the logs. Up to 100 `redacted_field * s` blocks are supported. See [Redacted Fields](#redacted-fields) below for more details. */ redactedFields?: core.Array | core.ArrayOut; /** * (Required) The Amazon Resource Name (ARN) of the web ACL that you want to associate with `log_destin * ation_configs`. */ resourceArn: string | core.StringOut; } export class V2WebAclLoggingConfiguration extends core.Resource { /** * The Amazon Resource Name (ARN) of the WAFv2 Web ACL. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource * Names (ARNs) that you want to associate with the web ACL. */ @core.attr(String, { kind: "array" }) public logDestinationConfigs!: | core.Array | core.ArrayOut; /** * (Optional) A configuration block that specifies which web requests are kept in the logs and which ar * e dropped. You can filter on the rule action and on the web request labels that were applied by matc * hing rules during web ACL evaluation. See [Logging Filter](#logging-filter) below for more details. */ @core.attr(LoggingFilter) public loggingFilter?: LoggingFilter; /** * (Optional) The parts of the request that you want to keep out of the logs. Up to 100 `redacted_field * s` blocks are supported. See [Redacted Fields](#redacted-fields) below for more details. */ @core.attr(RedactedFields, { kind: "array" }) public redactedFields?: | core.Array | core.ArrayOut; /** * (Required) The Amazon Resource Name (ARN) of the web ACL that you want to associate with `log_destin * ation_configs`. */ @core.attr(String) public resourceArn!: string | core.StringOut; constructor(name: string, args?: V2WebAclLoggingConfigurationArgs) { super(name, "aws_wafv2_web_acl_logging_configuration", args); } public override getNamespace(): string { return "aws_waf"; } }