diff --git a/api.md b/api.md index d8fbfd9ac0..5dd186440f 100644 --- a/api.md +++ b/api.md @@ -2833,60 +2833,79 @@ Methods: Response Types: -- rulesets.Ruleset +- rulesets.RulesetNewResponse +- rulesets.RulesetUpdateResponse - rulesets.RulesetListResponse +- rulesets.RulesetGetResponse Methods: -- client.Rulesets.New(ctx context.Context, params rulesets.RulesetNewParams) (rulesets.Ruleset, error) -- client.Rulesets.Update(ctx context.Context, rulesetID string, params rulesets.RulesetUpdateParams) (rulesets.Ruleset, error) +- client.Rulesets.New(ctx context.Context, params rulesets.RulesetNewParams) (rulesets.RulesetNewResponse, error) +- client.Rulesets.Update(ctx context.Context, rulesetID string, params rulesets.RulesetUpdateParams) (rulesets.RulesetUpdateResponse, error) - client.Rulesets.List(ctx context.Context, query rulesets.RulesetListParams) (pagination.SinglePage[rulesets.RulesetListResponse], error) - client.Rulesets.Delete(ctx context.Context, rulesetID string, body rulesets.RulesetDeleteParams) error -- client.Rulesets.Get(ctx context.Context, rulesetID string, query rulesets.RulesetGetParams) (rulesets.Ruleset, error) +- client.Rulesets.Get(ctx context.Context, rulesetID string, query rulesets.RulesetGetParams) (rulesets.RulesetGetResponse, error) ## Phases +Response Types: + +- rulesets.PhaseUpdateResponse +- rulesets.PhaseGetResponse + Methods: -- client.Rulesets.Phases.Update(ctx context.Context, rulesetPhase rulesets.PhaseUpdateParamsRulesetPhase, params rulesets.PhaseUpdateParams) (rulesets.Ruleset, error) -- client.Rulesets.Phases.Get(ctx context.Context, rulesetPhase rulesets.PhaseGetParamsRulesetPhase, query rulesets.PhaseGetParams) (rulesets.Ruleset, error) +- client.Rulesets.Phases.Update(ctx context.Context, rulesetPhase rulesets.PhaseUpdateParamsRulesetPhase, params rulesets.PhaseUpdateParams) (rulesets.PhaseUpdateResponse, error) +- client.Rulesets.Phases.Get(ctx context.Context, rulesetPhase rulesets.PhaseGetParamsRulesetPhase, query rulesets.PhaseGetParams) (rulesets.PhaseGetResponse, error) ### Versions Response Types: - rulesets.PhaseVersionListResponse +- rulesets.PhaseVersionGetResponse Methods: - client.Rulesets.Phases.Versions.List(ctx context.Context, rulesetPhase rulesets.PhaseVersionListParamsRulesetPhase, query rulesets.PhaseVersionListParams) (pagination.SinglePage[rulesets.PhaseVersionListResponse], error) -- client.Rulesets.Phases.Versions.Get(ctx context.Context, rulesetPhase rulesets.PhaseVersionGetParamsRulesetPhase, rulesetVersion string, query rulesets.PhaseVersionGetParams) (rulesets.Ruleset, error) +- client.Rulesets.Phases.Versions.Get(ctx context.Context, rulesetPhase rulesets.PhaseVersionGetParamsRulesetPhase, rulesetVersion string, query rulesets.PhaseVersionGetParams) (rulesets.PhaseVersionGetResponse, error) ## Rules +Response Types: + +- rulesets.RuleNewResponse +- rulesets.RuleDeleteResponse +- rulesets.RuleEditResponse + Methods: -- client.Rulesets.Rules.New(ctx context.Context, rulesetID string, params rulesets.RuleNewParams) (rulesets.Ruleset, error) -- client.Rulesets.Rules.Delete(ctx context.Context, rulesetID string, ruleID string, body rulesets.RuleDeleteParams) (rulesets.Ruleset, error) -- client.Rulesets.Rules.Edit(ctx context.Context, rulesetID string, ruleID string, params rulesets.RuleEditParams) (rulesets.Ruleset, error) +- client.Rulesets.Rules.New(ctx context.Context, rulesetID string, params rulesets.RuleNewParams) (rulesets.RuleNewResponse, error) +- client.Rulesets.Rules.Delete(ctx context.Context, rulesetID string, ruleID string, body rulesets.RuleDeleteParams) (rulesets.RuleDeleteResponse, error) +- client.Rulesets.Rules.Edit(ctx context.Context, rulesetID string, ruleID string, params rulesets.RuleEditParams) (rulesets.RuleEditResponse, error) ## Versions Response Types: - rulesets.VersionListResponse +- rulesets.VersionGetResponse Methods: - client.Rulesets.Versions.List(ctx context.Context, rulesetID string, query rulesets.VersionListParams) (pagination.SinglePage[rulesets.VersionListResponse], error) - client.Rulesets.Versions.Delete(ctx context.Context, rulesetID string, rulesetVersion string, body rulesets.VersionDeleteParams) error -- client.Rulesets.Versions.Get(ctx context.Context, rulesetID string, rulesetVersion string, query rulesets.VersionGetParams) (rulesets.Ruleset, error) +- client.Rulesets.Versions.Get(ctx context.Context, rulesetID string, rulesetVersion string, query rulesets.VersionGetParams) (rulesets.VersionGetResponse, error) ### ByTag +Response Types: + +- rulesets.VersionByTagGetResponse + Methods: -- client.Rulesets.Versions.ByTag.Get(ctx context.Context, rulesetID string, rulesetVersion string, ruleTag string, query rulesets.VersionByTagGetParams) (rulesets.Ruleset, error) +- client.Rulesets.Versions.ByTag.Get(ctx context.Context, rulesetID string, rulesetVersion string, ruleTag string, query rulesets.VersionByTagGetParams) (rulesets.VersionByTagGetResponse, error) # URLNormalization diff --git a/rulesets/phase.go b/rulesets/phase.go index 278d9257b3..04154948f1 100644 --- a/rulesets/phase.go +++ b/rulesets/phase.go @@ -6,11 +6,14 @@ import ( "context" "fmt" "net/http" + "reflect" + "time" "github.com/cloudflare/cloudflare-go/v2/internal/apijson" "github.com/cloudflare/cloudflare-go/v2/internal/param" "github.com/cloudflare/cloudflare-go/v2/internal/requestconfig" "github.com/cloudflare/cloudflare-go/v2/option" + "github.com/tidwall/gjson" ) // PhaseService contains methods and other services that help with interacting with @@ -33,7 +36,7 @@ func NewPhaseService(opts ...option.RequestOption) (r *PhaseService) { } // Updates an account or zone entry point ruleset, creating a new version. -func (r *PhaseService) Update(ctx context.Context, rulesetPhase PhaseUpdateParamsRulesetPhase, params PhaseUpdateParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *PhaseService) Update(ctx context.Context, rulesetPhase PhaseUpdateParamsRulesetPhase, params PhaseUpdateParams, opts ...option.RequestOption) (res *PhaseUpdateResponse, err error) { opts = append(r.Options[:], opts...) var env PhaseUpdateResponseEnvelope var accountOrZone string @@ -56,7 +59,7 @@ func (r *PhaseService) Update(ctx context.Context, rulesetPhase PhaseUpdateParam // Fetches the latest version of the account or zone entry point ruleset for a // given phase. -func (r *PhaseService) Get(ctx context.Context, rulesetPhase PhaseGetParamsRulesetPhase, query PhaseGetParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *PhaseService) Get(ctx context.Context, rulesetPhase PhaseGetParamsRulesetPhase, query PhaseGetParams, opts ...option.RequestOption) (res *PhaseGetResponse, err error) { opts = append(r.Options[:], opts...) var env PhaseGetResponseEnvelope var accountOrZone string @@ -77,9 +80,1781 @@ func (r *PhaseService) Get(ctx context.Context, rulesetPhase PhaseGetParamsRules return } +// A ruleset object. +type PhaseUpdateResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind PhaseUpdateResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase PhaseUpdateResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []PhaseUpdateResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON phaseUpdateResponseJSON `json:"-"` +} + +// phaseUpdateResponseJSON contains the JSON metadata for the struct +// [PhaseUpdateResponse] +type phaseUpdateResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type PhaseUpdateResponseKind string + +const ( + PhaseUpdateResponseKindManaged PhaseUpdateResponseKind = "managed" + PhaseUpdateResponseKindCustom PhaseUpdateResponseKind = "custom" + PhaseUpdateResponseKindRoot PhaseUpdateResponseKind = "root" + PhaseUpdateResponseKindZone PhaseUpdateResponseKind = "zone" +) + +func (r PhaseUpdateResponseKind) IsKnown() bool { + switch r { + case PhaseUpdateResponseKindManaged, PhaseUpdateResponseKindCustom, PhaseUpdateResponseKindRoot, PhaseUpdateResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type PhaseUpdateResponsePhase string + +const ( + PhaseUpdateResponsePhaseDDoSL4 PhaseUpdateResponsePhase = "ddos_l4" + PhaseUpdateResponsePhaseDDoSL7 PhaseUpdateResponsePhase = "ddos_l7" + PhaseUpdateResponsePhaseHTTPConfigSettings PhaseUpdateResponsePhase = "http_config_settings" + PhaseUpdateResponsePhaseHTTPCustomErrors PhaseUpdateResponsePhase = "http_custom_errors" + PhaseUpdateResponsePhaseHTTPLogCustomFields PhaseUpdateResponsePhase = "http_log_custom_fields" + PhaseUpdateResponsePhaseHTTPRatelimit PhaseUpdateResponsePhase = "http_ratelimit" + PhaseUpdateResponsePhaseHTTPRequestCacheSettings PhaseUpdateResponsePhase = "http_request_cache_settings" + PhaseUpdateResponsePhaseHTTPRequestDynamicRedirect PhaseUpdateResponsePhase = "http_request_dynamic_redirect" + PhaseUpdateResponsePhaseHTTPRequestFirewallCustom PhaseUpdateResponsePhase = "http_request_firewall_custom" + PhaseUpdateResponsePhaseHTTPRequestFirewallManaged PhaseUpdateResponsePhase = "http_request_firewall_managed" + PhaseUpdateResponsePhaseHTTPRequestLateTransform PhaseUpdateResponsePhase = "http_request_late_transform" + PhaseUpdateResponsePhaseHTTPRequestOrigin PhaseUpdateResponsePhase = "http_request_origin" + PhaseUpdateResponsePhaseHTTPRequestRedirect PhaseUpdateResponsePhase = "http_request_redirect" + PhaseUpdateResponsePhaseHTTPRequestSanitize PhaseUpdateResponsePhase = "http_request_sanitize" + PhaseUpdateResponsePhaseHTTPRequestSbfm PhaseUpdateResponsePhase = "http_request_sbfm" + PhaseUpdateResponsePhaseHTTPRequestSelectConfiguration PhaseUpdateResponsePhase = "http_request_select_configuration" + PhaseUpdateResponsePhaseHTTPRequestTransform PhaseUpdateResponsePhase = "http_request_transform" + PhaseUpdateResponsePhaseHTTPResponseCompression PhaseUpdateResponsePhase = "http_response_compression" + PhaseUpdateResponsePhaseHTTPResponseFirewallManaged PhaseUpdateResponsePhase = "http_response_firewall_managed" + PhaseUpdateResponsePhaseHTTPResponseHeadersTransform PhaseUpdateResponsePhase = "http_response_headers_transform" + PhaseUpdateResponsePhaseMagicTransit PhaseUpdateResponsePhase = "magic_transit" + PhaseUpdateResponsePhaseMagicTransitIDsManaged PhaseUpdateResponsePhase = "magic_transit_ids_managed" + PhaseUpdateResponsePhaseMagicTransitManaged PhaseUpdateResponsePhase = "magic_transit_managed" +) + +func (r PhaseUpdateResponsePhase) IsKnown() bool { + switch r { + case PhaseUpdateResponsePhaseDDoSL4, PhaseUpdateResponsePhaseDDoSL7, PhaseUpdateResponsePhaseHTTPConfigSettings, PhaseUpdateResponsePhaseHTTPCustomErrors, PhaseUpdateResponsePhaseHTTPLogCustomFields, PhaseUpdateResponsePhaseHTTPRatelimit, PhaseUpdateResponsePhaseHTTPRequestCacheSettings, PhaseUpdateResponsePhaseHTTPRequestDynamicRedirect, PhaseUpdateResponsePhaseHTTPRequestFirewallCustom, PhaseUpdateResponsePhaseHTTPRequestFirewallManaged, PhaseUpdateResponsePhaseHTTPRequestLateTransform, PhaseUpdateResponsePhaseHTTPRequestOrigin, PhaseUpdateResponsePhaseHTTPRequestRedirect, PhaseUpdateResponsePhaseHTTPRequestSanitize, PhaseUpdateResponsePhaseHTTPRequestSbfm, PhaseUpdateResponsePhaseHTTPRequestSelectConfiguration, PhaseUpdateResponsePhaseHTTPRequestTransform, PhaseUpdateResponsePhaseHTTPResponseCompression, PhaseUpdateResponsePhaseHTTPResponseFirewallManaged, PhaseUpdateResponsePhaseHTTPResponseHeadersTransform, PhaseUpdateResponsePhaseMagicTransit, PhaseUpdateResponsePhaseMagicTransitIDsManaged, PhaseUpdateResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.PhaseUpdateResponseRulesRulesetsBlockRule], +// [rulesets.PhaseUpdateResponseRulesRulesetsExecuteRule], +// [rulesets.PhaseUpdateResponseRulesRulesetsLogRule] or +// [rulesets.PhaseUpdateResponseRulesRulesetsSkipRule]. +type PhaseUpdateResponseRule interface { + implementsRulesetsPhaseUpdateResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*PhaseUpdateResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseUpdateResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseUpdateResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseUpdateResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseUpdateResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type PhaseUpdateResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseUpdateResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseUpdateResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseUpdateResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseUpdateResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [PhaseUpdateResponseRulesRulesetsBlockRule] +type phaseUpdateResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseUpdateResponseRulesRulesetsBlockRule) implementsRulesetsPhaseUpdateResponseRule() {} + +// The action to perform when the rule matches. +type PhaseUpdateResponseRulesRulesetsBlockRuleAction string + +const ( + PhaseUpdateResponseRulesRulesetsBlockRuleActionBlock PhaseUpdateResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r PhaseUpdateResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseUpdateResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response PhaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON phaseUpdateResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct +// [PhaseUpdateResponseRulesRulesetsBlockRuleActionParameters] +type phaseUpdateResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type PhaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON phaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains +// the JSON metadata for the struct +// [PhaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponse] +type phaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type PhaseUpdateResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseUpdateResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata +// for the struct [PhaseUpdateResponseRulesRulesetsBlockRuleLogging] +type phaseUpdateResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseUpdateResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseUpdateResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseUpdateResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseUpdateResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseUpdateResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for +// the struct [PhaseUpdateResponseRulesRulesetsExecuteRule] +type phaseUpdateResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseUpdateResponseRulesRulesetsExecuteRule) implementsRulesetsPhaseUpdateResponseRule() {} + +// The action to perform when the rule matches. +type PhaseUpdateResponseRulesRulesetsExecuteRuleAction string + +const ( + PhaseUpdateResponseRulesRulesetsExecuteRuleActionExecute PhaseUpdateResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r PhaseUpdateResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON contains the +// JSON metadata for the struct +// [PhaseUpdateResponseRulesRulesetsExecuteRuleActionParameters] +type phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON +// contains the JSON metadata for the struct +// [PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, PhaseUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseUpdateResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseUpdateResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON +// metadata for the struct [PhaseUpdateResponseRulesRulesetsExecuteRuleLogging] +type phaseUpdateResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseUpdateResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseUpdateResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseUpdateResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseUpdateResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [PhaseUpdateResponseRulesRulesetsLogRule] +type phaseUpdateResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseUpdateResponseRulesRulesetsLogRule) implementsRulesetsPhaseUpdateResponseRule() {} + +// The action to perform when the rule matches. +type PhaseUpdateResponseRulesRulesetsLogRuleAction string + +const ( + PhaseUpdateResponseRulesRulesetsLogRuleActionLog PhaseUpdateResponseRulesRulesetsLogRuleAction = "log" +) + +func (r PhaseUpdateResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseUpdateResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseUpdateResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata +// for the struct [PhaseUpdateResponseRulesRulesetsLogRuleLogging] +type phaseUpdateResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseUpdateResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseUpdateResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseUpdateResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseUpdateResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseUpdateResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [PhaseUpdateResponseRulesRulesetsSkipRule] +type phaseUpdateResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseUpdateResponseRulesRulesetsSkipRule) implementsRulesetsPhaseUpdateResponseRule() {} + +// The action to perform when the rule matches. +type PhaseUpdateResponseRulesRulesetsSkipRuleAction string + +const ( + PhaseUpdateResponseRulesRulesetsSkipRuleActionSkip PhaseUpdateResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r PhaseUpdateResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseUpdateResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON phaseUpdateResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct +// [PhaseUpdateResponseRulesRulesetsSkipRuleActionParameters] +type phaseUpdateResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductBic PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductHot PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductRateLimit PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductUABlock PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductWAF PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductBic, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductHot, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductUABlock, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductWAF, PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case PhaseUpdateResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseUpdateResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseUpdateResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// phaseUpdateResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata +// for the struct [PhaseUpdateResponseRulesRulesetsSkipRuleLogging] +type phaseUpdateResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseUpdateResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseUpdateResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + +// A ruleset object. +type PhaseGetResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind PhaseGetResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase PhaseGetResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []PhaseGetResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON phaseGetResponseJSON `json:"-"` +} + +// phaseGetResponseJSON contains the JSON metadata for the struct +// [PhaseGetResponse] +type phaseGetResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type PhaseGetResponseKind string + +const ( + PhaseGetResponseKindManaged PhaseGetResponseKind = "managed" + PhaseGetResponseKindCustom PhaseGetResponseKind = "custom" + PhaseGetResponseKindRoot PhaseGetResponseKind = "root" + PhaseGetResponseKindZone PhaseGetResponseKind = "zone" +) + +func (r PhaseGetResponseKind) IsKnown() bool { + switch r { + case PhaseGetResponseKindManaged, PhaseGetResponseKindCustom, PhaseGetResponseKindRoot, PhaseGetResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type PhaseGetResponsePhase string + +const ( + PhaseGetResponsePhaseDDoSL4 PhaseGetResponsePhase = "ddos_l4" + PhaseGetResponsePhaseDDoSL7 PhaseGetResponsePhase = "ddos_l7" + PhaseGetResponsePhaseHTTPConfigSettings PhaseGetResponsePhase = "http_config_settings" + PhaseGetResponsePhaseHTTPCustomErrors PhaseGetResponsePhase = "http_custom_errors" + PhaseGetResponsePhaseHTTPLogCustomFields PhaseGetResponsePhase = "http_log_custom_fields" + PhaseGetResponsePhaseHTTPRatelimit PhaseGetResponsePhase = "http_ratelimit" + PhaseGetResponsePhaseHTTPRequestCacheSettings PhaseGetResponsePhase = "http_request_cache_settings" + PhaseGetResponsePhaseHTTPRequestDynamicRedirect PhaseGetResponsePhase = "http_request_dynamic_redirect" + PhaseGetResponsePhaseHTTPRequestFirewallCustom PhaseGetResponsePhase = "http_request_firewall_custom" + PhaseGetResponsePhaseHTTPRequestFirewallManaged PhaseGetResponsePhase = "http_request_firewall_managed" + PhaseGetResponsePhaseHTTPRequestLateTransform PhaseGetResponsePhase = "http_request_late_transform" + PhaseGetResponsePhaseHTTPRequestOrigin PhaseGetResponsePhase = "http_request_origin" + PhaseGetResponsePhaseHTTPRequestRedirect PhaseGetResponsePhase = "http_request_redirect" + PhaseGetResponsePhaseHTTPRequestSanitize PhaseGetResponsePhase = "http_request_sanitize" + PhaseGetResponsePhaseHTTPRequestSbfm PhaseGetResponsePhase = "http_request_sbfm" + PhaseGetResponsePhaseHTTPRequestSelectConfiguration PhaseGetResponsePhase = "http_request_select_configuration" + PhaseGetResponsePhaseHTTPRequestTransform PhaseGetResponsePhase = "http_request_transform" + PhaseGetResponsePhaseHTTPResponseCompression PhaseGetResponsePhase = "http_response_compression" + PhaseGetResponsePhaseHTTPResponseFirewallManaged PhaseGetResponsePhase = "http_response_firewall_managed" + PhaseGetResponsePhaseHTTPResponseHeadersTransform PhaseGetResponsePhase = "http_response_headers_transform" + PhaseGetResponsePhaseMagicTransit PhaseGetResponsePhase = "magic_transit" + PhaseGetResponsePhaseMagicTransitIDsManaged PhaseGetResponsePhase = "magic_transit_ids_managed" + PhaseGetResponsePhaseMagicTransitManaged PhaseGetResponsePhase = "magic_transit_managed" +) + +func (r PhaseGetResponsePhase) IsKnown() bool { + switch r { + case PhaseGetResponsePhaseDDoSL4, PhaseGetResponsePhaseDDoSL7, PhaseGetResponsePhaseHTTPConfigSettings, PhaseGetResponsePhaseHTTPCustomErrors, PhaseGetResponsePhaseHTTPLogCustomFields, PhaseGetResponsePhaseHTTPRatelimit, PhaseGetResponsePhaseHTTPRequestCacheSettings, PhaseGetResponsePhaseHTTPRequestDynamicRedirect, PhaseGetResponsePhaseHTTPRequestFirewallCustom, PhaseGetResponsePhaseHTTPRequestFirewallManaged, PhaseGetResponsePhaseHTTPRequestLateTransform, PhaseGetResponsePhaseHTTPRequestOrigin, PhaseGetResponsePhaseHTTPRequestRedirect, PhaseGetResponsePhaseHTTPRequestSanitize, PhaseGetResponsePhaseHTTPRequestSbfm, PhaseGetResponsePhaseHTTPRequestSelectConfiguration, PhaseGetResponsePhaseHTTPRequestTransform, PhaseGetResponsePhaseHTTPResponseCompression, PhaseGetResponsePhaseHTTPResponseFirewallManaged, PhaseGetResponsePhaseHTTPResponseHeadersTransform, PhaseGetResponsePhaseMagicTransit, PhaseGetResponsePhaseMagicTransitIDsManaged, PhaseGetResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.PhaseGetResponseRulesRulesetsBlockRule], +// [rulesets.PhaseGetResponseRulesRulesetsExecuteRule], +// [rulesets.PhaseGetResponseRulesRulesetsLogRule] or +// [rulesets.PhaseGetResponseRulesRulesetsSkipRule]. +type PhaseGetResponseRule interface { + implementsRulesetsPhaseGetResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*PhaseGetResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseGetResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseGetResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseGetResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseGetResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type PhaseGetResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseGetResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseGetResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseGetResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseGetResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [PhaseGetResponseRulesRulesetsBlockRule] +type phaseGetResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseGetResponseRulesRulesetsBlockRule) implementsRulesetsPhaseGetResponseRule() {} + +// The action to perform when the rule matches. +type PhaseGetResponseRulesRulesetsBlockRuleAction string + +const ( + PhaseGetResponseRulesRulesetsBlockRuleActionBlock PhaseGetResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r PhaseGetResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseGetResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response PhaseGetResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON phaseGetResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct [PhaseGetResponseRulesRulesetsBlockRuleActionParameters] +type phaseGetResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type PhaseGetResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON phaseGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains the +// JSON metadata for the struct +// [PhaseGetResponseRulesRulesetsBlockRuleActionParametersResponse] +type phaseGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type PhaseGetResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseGetResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata for +// the struct [PhaseGetResponseRulesRulesetsBlockRuleLogging] +type phaseGetResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseGetResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseGetResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseGetResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseGetResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseGetResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for the +// struct [PhaseGetResponseRulesRulesetsExecuteRule] +type phaseGetResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseGetResponseRulesRulesetsExecuteRule) implementsRulesetsPhaseGetResponseRule() {} + +// The action to perform when the rule matches. +type PhaseGetResponseRulesRulesetsExecuteRuleAction string + +const ( + PhaseGetResponseRulesRulesetsExecuteRuleActionExecute PhaseGetResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r PhaseGetResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseGetResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData PhaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON phaseGetResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsExecuteRuleActionParametersJSON contains the JSON +// metadata for the struct +// [PhaseGetResponseRulesRulesetsExecuteRuleActionParameters] +type phaseGetResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type PhaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON phaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON contains +// the JSON metadata for the struct +// [PhaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type phaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON contains +// the JSON metadata for the struct +// [PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, PhaseGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseGetResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseGetResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata +// for the struct [PhaseGetResponseRulesRulesetsExecuteRuleLogging] +type phaseGetResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseGetResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseGetResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseGetResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseGetResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [PhaseGetResponseRulesRulesetsLogRule] +type phaseGetResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseGetResponseRulesRulesetsLogRule) implementsRulesetsPhaseGetResponseRule() {} + +// The action to perform when the rule matches. +type PhaseGetResponseRulesRulesetsLogRuleAction string + +const ( + PhaseGetResponseRulesRulesetsLogRuleActionLog PhaseGetResponseRulesRulesetsLogRuleAction = "log" +) + +func (r PhaseGetResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseGetResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseGetResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for +// the struct [PhaseGetResponseRulesRulesetsLogRuleLogging] +type phaseGetResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseGetResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseGetResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseGetResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseGetResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseGetResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [PhaseGetResponseRulesRulesetsSkipRule] +type phaseGetResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseGetResponseRulesRulesetsSkipRule) implementsRulesetsPhaseGetResponseRule() {} + +// The action to perform when the rule matches. +type PhaseGetResponseRulesRulesetsSkipRuleAction string + +const ( + PhaseGetResponseRulesRulesetsSkipRuleActionSkip PhaseGetResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r PhaseGetResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseGetResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset PhaseGetResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON phaseGetResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct [PhaseGetResponseRulesRulesetsSkipRuleActionParameters] +type phaseGetResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, PhaseGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductBic PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductHot PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductWAF PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r PhaseGetResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductBic, PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductHot, PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock, PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductWAF, PhaseGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type PhaseGetResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + PhaseGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent PhaseGetResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r PhaseGetResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case PhaseGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseGetResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseGetResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// phaseGetResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata for +// the struct [PhaseGetResponseRulesRulesetsSkipRuleLogging] +type phaseGetResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseGetResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseGetResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + type PhaseUpdateParams struct { - // The unique ID of the ruleset. - ID param.Field[string] `json:"id,required"` // The list of rules in the ruleset. Rules param.Field[[]PhaseUpdateParamsRule] `json:"rules,required"` // The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. @@ -661,8 +2436,8 @@ type PhaseUpdateResponseEnvelope struct { Errors []PhaseUpdateResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []PhaseUpdateResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result PhaseUpdateResponse `json:"result,required"` // Whether the API call was successful. Success PhaseUpdateResponseEnvelopeSuccess `json:"success,required"` JSON phaseUpdateResponseEnvelopeJSON `json:"-"` @@ -856,8 +2631,8 @@ type PhaseGetResponseEnvelope struct { Errors []PhaseGetResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []PhaseGetResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result PhaseGetResponse `json:"result,required"` // Whether the API call was successful. Success PhaseGetResponseEnvelopeSuccess `json:"success,required"` JSON phaseGetResponseEnvelopeJSON `json:"-"` diff --git a/rulesets/phase_test.go b/rulesets/phase_test.go index 7a32a025e3..8f0d9980b3 100644 --- a/rulesets/phase_test.go +++ b/rulesets/phase_test.go @@ -32,7 +32,6 @@ func TestPhaseUpdateWithOptionalParams(t *testing.T) { context.TODO(), rulesets.PhaseUpdateParamsRulesetPhaseHTTPRequestFirewallCustom, rulesets.PhaseUpdateParams{ - ID: cloudflare.F("2f2feab2026849078ba485f918791bdc"), Rules: cloudflare.F([]rulesets.PhaseUpdateParamsRule{rulesets.PhaseUpdateParamsRulesRulesetsBlockRule(rulesets.PhaseUpdateParamsRulesRulesetsBlockRule{ Action: cloudflare.F(rulesets.PhaseUpdateParamsRulesRulesetsBlockRuleActionBlock), ActionParameters: cloudflare.F(rulesets.PhaseUpdateParamsRulesRulesetsBlockRuleActionParameters{ diff --git a/rulesets/phaseversion.go b/rulesets/phaseversion.go index 54b50a3641..403de27cac 100644 --- a/rulesets/phaseversion.go +++ b/rulesets/phaseversion.go @@ -6,6 +6,7 @@ import ( "context" "fmt" "net/http" + "reflect" "time" "github.com/cloudflare/cloudflare-go/v2/internal/apijson" @@ -13,6 +14,7 @@ import ( "github.com/cloudflare/cloudflare-go/v2/internal/param" "github.com/cloudflare/cloudflare-go/v2/internal/requestconfig" "github.com/cloudflare/cloudflare-go/v2/option" + "github.com/tidwall/gjson" ) // PhaseVersionService contains methods and other services that help with @@ -66,7 +68,7 @@ func (r *PhaseVersionService) ListAutoPaging(ctx context.Context, rulesetPhase P } // Fetches a specific version of an account or zone entry point ruleset. -func (r *PhaseVersionService) Get(ctx context.Context, rulesetPhase PhaseVersionGetParamsRulesetPhase, rulesetVersion string, query PhaseVersionGetParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *PhaseVersionService) Get(ctx context.Context, rulesetPhase PhaseVersionGetParamsRulesetPhase, rulesetVersion string, query PhaseVersionGetParams, opts ...option.RequestOption) (res *PhaseVersionGetResponse, err error) { opts = append(r.Options[:], opts...) var env PhaseVersionGetResponseEnvelope var accountOrZone string @@ -183,6 +185,898 @@ func (r PhaseVersionListResponsePhase) IsKnown() bool { return false } +// A ruleset object. +type PhaseVersionGetResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind PhaseVersionGetResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase PhaseVersionGetResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []PhaseVersionGetResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON phaseVersionGetResponseJSON `json:"-"` +} + +// phaseVersionGetResponseJSON contains the JSON metadata for the struct +// [PhaseVersionGetResponse] +type phaseVersionGetResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type PhaseVersionGetResponseKind string + +const ( + PhaseVersionGetResponseKindManaged PhaseVersionGetResponseKind = "managed" + PhaseVersionGetResponseKindCustom PhaseVersionGetResponseKind = "custom" + PhaseVersionGetResponseKindRoot PhaseVersionGetResponseKind = "root" + PhaseVersionGetResponseKindZone PhaseVersionGetResponseKind = "zone" +) + +func (r PhaseVersionGetResponseKind) IsKnown() bool { + switch r { + case PhaseVersionGetResponseKindManaged, PhaseVersionGetResponseKindCustom, PhaseVersionGetResponseKindRoot, PhaseVersionGetResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type PhaseVersionGetResponsePhase string + +const ( + PhaseVersionGetResponsePhaseDDoSL4 PhaseVersionGetResponsePhase = "ddos_l4" + PhaseVersionGetResponsePhaseDDoSL7 PhaseVersionGetResponsePhase = "ddos_l7" + PhaseVersionGetResponsePhaseHTTPConfigSettings PhaseVersionGetResponsePhase = "http_config_settings" + PhaseVersionGetResponsePhaseHTTPCustomErrors PhaseVersionGetResponsePhase = "http_custom_errors" + PhaseVersionGetResponsePhaseHTTPLogCustomFields PhaseVersionGetResponsePhase = "http_log_custom_fields" + PhaseVersionGetResponsePhaseHTTPRatelimit PhaseVersionGetResponsePhase = "http_ratelimit" + PhaseVersionGetResponsePhaseHTTPRequestCacheSettings PhaseVersionGetResponsePhase = "http_request_cache_settings" + PhaseVersionGetResponsePhaseHTTPRequestDynamicRedirect PhaseVersionGetResponsePhase = "http_request_dynamic_redirect" + PhaseVersionGetResponsePhaseHTTPRequestFirewallCustom PhaseVersionGetResponsePhase = "http_request_firewall_custom" + PhaseVersionGetResponsePhaseHTTPRequestFirewallManaged PhaseVersionGetResponsePhase = "http_request_firewall_managed" + PhaseVersionGetResponsePhaseHTTPRequestLateTransform PhaseVersionGetResponsePhase = "http_request_late_transform" + PhaseVersionGetResponsePhaseHTTPRequestOrigin PhaseVersionGetResponsePhase = "http_request_origin" + PhaseVersionGetResponsePhaseHTTPRequestRedirect PhaseVersionGetResponsePhase = "http_request_redirect" + PhaseVersionGetResponsePhaseHTTPRequestSanitize PhaseVersionGetResponsePhase = "http_request_sanitize" + PhaseVersionGetResponsePhaseHTTPRequestSbfm PhaseVersionGetResponsePhase = "http_request_sbfm" + PhaseVersionGetResponsePhaseHTTPRequestSelectConfiguration PhaseVersionGetResponsePhase = "http_request_select_configuration" + PhaseVersionGetResponsePhaseHTTPRequestTransform PhaseVersionGetResponsePhase = "http_request_transform" + PhaseVersionGetResponsePhaseHTTPResponseCompression PhaseVersionGetResponsePhase = "http_response_compression" + PhaseVersionGetResponsePhaseHTTPResponseFirewallManaged PhaseVersionGetResponsePhase = "http_response_firewall_managed" + PhaseVersionGetResponsePhaseHTTPResponseHeadersTransform PhaseVersionGetResponsePhase = "http_response_headers_transform" + PhaseVersionGetResponsePhaseMagicTransit PhaseVersionGetResponsePhase = "magic_transit" + PhaseVersionGetResponsePhaseMagicTransitIDsManaged PhaseVersionGetResponsePhase = "magic_transit_ids_managed" + PhaseVersionGetResponsePhaseMagicTransitManaged PhaseVersionGetResponsePhase = "magic_transit_managed" +) + +func (r PhaseVersionGetResponsePhase) IsKnown() bool { + switch r { + case PhaseVersionGetResponsePhaseDDoSL4, PhaseVersionGetResponsePhaseDDoSL7, PhaseVersionGetResponsePhaseHTTPConfigSettings, PhaseVersionGetResponsePhaseHTTPCustomErrors, PhaseVersionGetResponsePhaseHTTPLogCustomFields, PhaseVersionGetResponsePhaseHTTPRatelimit, PhaseVersionGetResponsePhaseHTTPRequestCacheSettings, PhaseVersionGetResponsePhaseHTTPRequestDynamicRedirect, PhaseVersionGetResponsePhaseHTTPRequestFirewallCustom, PhaseVersionGetResponsePhaseHTTPRequestFirewallManaged, PhaseVersionGetResponsePhaseHTTPRequestLateTransform, PhaseVersionGetResponsePhaseHTTPRequestOrigin, PhaseVersionGetResponsePhaseHTTPRequestRedirect, PhaseVersionGetResponsePhaseHTTPRequestSanitize, PhaseVersionGetResponsePhaseHTTPRequestSbfm, PhaseVersionGetResponsePhaseHTTPRequestSelectConfiguration, PhaseVersionGetResponsePhaseHTTPRequestTransform, PhaseVersionGetResponsePhaseHTTPResponseCompression, PhaseVersionGetResponsePhaseHTTPResponseFirewallManaged, PhaseVersionGetResponsePhaseHTTPResponseHeadersTransform, PhaseVersionGetResponsePhaseMagicTransit, PhaseVersionGetResponsePhaseMagicTransitIDsManaged, PhaseVersionGetResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.PhaseVersionGetResponseRulesRulesetsBlockRule], +// [rulesets.PhaseVersionGetResponseRulesRulesetsExecuteRule], +// [rulesets.PhaseVersionGetResponseRulesRulesetsLogRule] or +// [rulesets.PhaseVersionGetResponseRulesRulesetsSkipRule]. +type PhaseVersionGetResponseRule interface { + implementsRulesetsPhaseVersionGetResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*PhaseVersionGetResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseVersionGetResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseVersionGetResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseVersionGetResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(PhaseVersionGetResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type PhaseVersionGetResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseVersionGetResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseVersionGetResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseVersionGetResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseVersionGetResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for +// the struct [PhaseVersionGetResponseRulesRulesetsBlockRule] +type phaseVersionGetResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseVersionGetResponseRulesRulesetsBlockRule) implementsRulesetsPhaseVersionGetResponseRule() { +} + +// The action to perform when the rule matches. +type PhaseVersionGetResponseRulesRulesetsBlockRuleAction string + +const ( + PhaseVersionGetResponseRulesRulesetsBlockRuleActionBlock PhaseVersionGetResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r PhaseVersionGetResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseVersionGetResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response PhaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersJSON contains the +// JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsBlockRuleActionParameters] +type phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type PhaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON +// contains the JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponse] +type phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type PhaseVersionGetResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseVersionGetResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON +// metadata for the struct [PhaseVersionGetResponseRulesRulesetsBlockRuleLogging] +type phaseVersionGetResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseVersionGetResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseVersionGetResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseVersionGetResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseVersionGetResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata +// for the struct [PhaseVersionGetResponseRulesRulesetsExecuteRule] +type phaseVersionGetResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseVersionGetResponseRulesRulesetsExecuteRule) implementsRulesetsPhaseVersionGetResponseRule() { +} + +// The action to perform when the rule matches. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleAction string + +const ( + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionExecute PhaseVersionGetResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r PhaseVersionGetResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersJSON contains the +// JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParameters] +type phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON +// contains the JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, PhaseVersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseVersionGetResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseVersionGetResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON +// metadata for the struct [PhaseVersionGetResponseRulesRulesetsExecuteRuleLogging] +type phaseVersionGetResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseVersionGetResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseVersionGetResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseVersionGetResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseVersionGetResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsLogRuleJSON contains the JSON metadata for +// the struct [PhaseVersionGetResponseRulesRulesetsLogRule] +type phaseVersionGetResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseVersionGetResponseRulesRulesetsLogRule) implementsRulesetsPhaseVersionGetResponseRule() { +} + +// The action to perform when the rule matches. +type PhaseVersionGetResponseRulesRulesetsLogRuleAction string + +const ( + PhaseVersionGetResponseRulesRulesetsLogRuleActionLog PhaseVersionGetResponseRulesRulesetsLogRuleAction = "log" +) + +func (r PhaseVersionGetResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseVersionGetResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseVersionGetResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsLogRuleLoggingJSON contains the JSON +// metadata for the struct [PhaseVersionGetResponseRulesRulesetsLogRuleLogging] +type phaseVersionGetResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type PhaseVersionGetResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action PhaseVersionGetResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters PhaseVersionGetResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging PhaseVersionGetResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON phaseVersionGetResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for +// the struct [PhaseVersionGetResponseRulesRulesetsSkipRule] +type phaseVersionGetResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r PhaseVersionGetResponseRulesRulesetsSkipRule) implementsRulesetsPhaseVersionGetResponseRule() { +} + +// The action to perform when the rule matches. +type PhaseVersionGetResponseRulesRulesetsSkipRuleAction string + +const ( + PhaseVersionGetResponseRulesRulesetsSkipRuleActionSkip PhaseVersionGetResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r PhaseVersionGetResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type PhaseVersionGetResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON phaseVersionGetResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsSkipRuleActionParametersJSON contains the +// JSON metadata for the struct +// [PhaseVersionGetResponseRulesRulesetsSkipRuleActionParameters] +type phaseVersionGetResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductBic PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductHot PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductWAF PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductBic, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductHot, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductWAF, PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case PhaseVersionGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type PhaseVersionGetResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON phaseVersionGetResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// phaseVersionGetResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON +// metadata for the struct [PhaseVersionGetResponseRulesRulesetsSkipRuleLogging] +type phaseVersionGetResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *PhaseVersionGetResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r phaseVersionGetResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + type PhaseVersionListParams struct { // The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. AccountID param.Field[string] `path:"account_id"` @@ -277,8 +1171,8 @@ type PhaseVersionGetResponseEnvelope struct { Errors []PhaseVersionGetResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []PhaseVersionGetResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result PhaseVersionGetResponse `json:"result,required"` // Whether the API call was successful. Success PhaseVersionGetResponseEnvelopeSuccess `json:"success,required"` JSON phaseVersionGetResponseEnvelopeJSON `json:"-"` diff --git a/rulesets/rule.go b/rulesets/rule.go index e2cee9c041..09ea6535f8 100644 --- a/rulesets/rule.go +++ b/rulesets/rule.go @@ -6,11 +6,14 @@ import ( "context" "fmt" "net/http" + "reflect" + "time" "github.com/cloudflare/cloudflare-go/v2/internal/apijson" "github.com/cloudflare/cloudflare-go/v2/internal/param" "github.com/cloudflare/cloudflare-go/v2/internal/requestconfig" "github.com/cloudflare/cloudflare-go/v2/option" + "github.com/tidwall/gjson" ) // RuleService contains methods and other services that help with interacting with @@ -32,7 +35,7 @@ func NewRuleService(opts ...option.RequestOption) (r *RuleService) { // Adds a new rule to an account or zone ruleset. The rule will be added to the end // of the existing list of rules in the ruleset by default. -func (r *RuleService) New(ctx context.Context, rulesetID string, params RuleNewParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *RuleService) New(ctx context.Context, rulesetID string, params RuleNewParams, opts ...option.RequestOption) (res *RuleNewResponse, err error) { opts = append(r.Options[:], opts...) var env RuleNewResponseEnvelope var accountOrZone string @@ -54,7 +57,7 @@ func (r *RuleService) New(ctx context.Context, rulesetID string, params RuleNewP } // Deletes an existing rule from an account or zone ruleset. -func (r *RuleService) Delete(ctx context.Context, rulesetID string, ruleID string, body RuleDeleteParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *RuleService) Delete(ctx context.Context, rulesetID string, ruleID string, body RuleDeleteParams, opts ...option.RequestOption) (res *RuleDeleteResponse, err error) { opts = append(r.Options[:], opts...) var env RuleDeleteResponseEnvelope var accountOrZone string @@ -76,7 +79,7 @@ func (r *RuleService) Delete(ctx context.Context, rulesetID string, ruleID strin } // Updates an existing rule in an account or zone ruleset. -func (r *RuleService) Edit(ctx context.Context, rulesetID string, ruleID string, params RuleEditParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *RuleService) Edit(ctx context.Context, rulesetID string, ruleID string, params RuleEditParams, opts ...option.RequestOption) (res *RuleEditResponse, err error) { opts = append(r.Options[:], opts...) var env RuleEditResponseEnvelope var accountOrZone string @@ -97,6 +100,2665 @@ func (r *RuleService) Edit(ctx context.Context, rulesetID string, ruleID string, return } +// A ruleset object. +type RuleNewResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind RuleNewResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase RuleNewResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []RuleNewResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON ruleNewResponseJSON `json:"-"` +} + +// ruleNewResponseJSON contains the JSON metadata for the struct [RuleNewResponse] +type ruleNewResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type RuleNewResponseKind string + +const ( + RuleNewResponseKindManaged RuleNewResponseKind = "managed" + RuleNewResponseKindCustom RuleNewResponseKind = "custom" + RuleNewResponseKindRoot RuleNewResponseKind = "root" + RuleNewResponseKindZone RuleNewResponseKind = "zone" +) + +func (r RuleNewResponseKind) IsKnown() bool { + switch r { + case RuleNewResponseKindManaged, RuleNewResponseKindCustom, RuleNewResponseKindRoot, RuleNewResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type RuleNewResponsePhase string + +const ( + RuleNewResponsePhaseDDoSL4 RuleNewResponsePhase = "ddos_l4" + RuleNewResponsePhaseDDoSL7 RuleNewResponsePhase = "ddos_l7" + RuleNewResponsePhaseHTTPConfigSettings RuleNewResponsePhase = "http_config_settings" + RuleNewResponsePhaseHTTPCustomErrors RuleNewResponsePhase = "http_custom_errors" + RuleNewResponsePhaseHTTPLogCustomFields RuleNewResponsePhase = "http_log_custom_fields" + RuleNewResponsePhaseHTTPRatelimit RuleNewResponsePhase = "http_ratelimit" + RuleNewResponsePhaseHTTPRequestCacheSettings RuleNewResponsePhase = "http_request_cache_settings" + RuleNewResponsePhaseHTTPRequestDynamicRedirect RuleNewResponsePhase = "http_request_dynamic_redirect" + RuleNewResponsePhaseHTTPRequestFirewallCustom RuleNewResponsePhase = "http_request_firewall_custom" + RuleNewResponsePhaseHTTPRequestFirewallManaged RuleNewResponsePhase = "http_request_firewall_managed" + RuleNewResponsePhaseHTTPRequestLateTransform RuleNewResponsePhase = "http_request_late_transform" + RuleNewResponsePhaseHTTPRequestOrigin RuleNewResponsePhase = "http_request_origin" + RuleNewResponsePhaseHTTPRequestRedirect RuleNewResponsePhase = "http_request_redirect" + RuleNewResponsePhaseHTTPRequestSanitize RuleNewResponsePhase = "http_request_sanitize" + RuleNewResponsePhaseHTTPRequestSbfm RuleNewResponsePhase = "http_request_sbfm" + RuleNewResponsePhaseHTTPRequestSelectConfiguration RuleNewResponsePhase = "http_request_select_configuration" + RuleNewResponsePhaseHTTPRequestTransform RuleNewResponsePhase = "http_request_transform" + RuleNewResponsePhaseHTTPResponseCompression RuleNewResponsePhase = "http_response_compression" + RuleNewResponsePhaseHTTPResponseFirewallManaged RuleNewResponsePhase = "http_response_firewall_managed" + RuleNewResponsePhaseHTTPResponseHeadersTransform RuleNewResponsePhase = "http_response_headers_transform" + RuleNewResponsePhaseMagicTransit RuleNewResponsePhase = "magic_transit" + RuleNewResponsePhaseMagicTransitIDsManaged RuleNewResponsePhase = "magic_transit_ids_managed" + RuleNewResponsePhaseMagicTransitManaged RuleNewResponsePhase = "magic_transit_managed" +) + +func (r RuleNewResponsePhase) IsKnown() bool { + switch r { + case RuleNewResponsePhaseDDoSL4, RuleNewResponsePhaseDDoSL7, RuleNewResponsePhaseHTTPConfigSettings, RuleNewResponsePhaseHTTPCustomErrors, RuleNewResponsePhaseHTTPLogCustomFields, RuleNewResponsePhaseHTTPRatelimit, RuleNewResponsePhaseHTTPRequestCacheSettings, RuleNewResponsePhaseHTTPRequestDynamicRedirect, RuleNewResponsePhaseHTTPRequestFirewallCustom, RuleNewResponsePhaseHTTPRequestFirewallManaged, RuleNewResponsePhaseHTTPRequestLateTransform, RuleNewResponsePhaseHTTPRequestOrigin, RuleNewResponsePhaseHTTPRequestRedirect, RuleNewResponsePhaseHTTPRequestSanitize, RuleNewResponsePhaseHTTPRequestSbfm, RuleNewResponsePhaseHTTPRequestSelectConfiguration, RuleNewResponsePhaseHTTPRequestTransform, RuleNewResponsePhaseHTTPResponseCompression, RuleNewResponsePhaseHTTPResponseFirewallManaged, RuleNewResponsePhaseHTTPResponseHeadersTransform, RuleNewResponsePhaseMagicTransit, RuleNewResponsePhaseMagicTransitIDsManaged, RuleNewResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.RuleNewResponseRulesRulesetsBlockRule], +// [rulesets.RuleNewResponseRulesRulesetsExecuteRule], +// [rulesets.RuleNewResponseRulesRulesetsLogRule] or +// [rulesets.RuleNewResponseRulesRulesetsSkipRule]. +type RuleNewResponseRule interface { + implementsRulesetsRuleNewResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*RuleNewResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleNewResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleNewResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleNewResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleNewResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type RuleNewResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleNewResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleNewResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleNewResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleNewResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [RuleNewResponseRulesRulesetsBlockRule] +type ruleNewResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleNewResponseRulesRulesetsBlockRule) implementsRulesetsRuleNewResponseRule() {} + +// The action to perform when the rule matches. +type RuleNewResponseRulesRulesetsBlockRuleAction string + +const ( + RuleNewResponseRulesRulesetsBlockRuleActionBlock RuleNewResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r RuleNewResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleNewResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response RuleNewResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON ruleNewResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct [RuleNewResponseRulesRulesetsBlockRuleActionParameters] +type ruleNewResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type RuleNewResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON ruleNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains the +// JSON metadata for the struct +// [RuleNewResponseRulesRulesetsBlockRuleActionParametersResponse] +type ruleNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type RuleNewResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleNewResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata for +// the struct [RuleNewResponseRulesRulesetsBlockRuleLogging] +type ruleNewResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleNewResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleNewResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleNewResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleNewResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleNewResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for the +// struct [RuleNewResponseRulesRulesetsExecuteRule] +type ruleNewResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleNewResponseRulesRulesetsExecuteRule) implementsRulesetsRuleNewResponseRule() {} + +// The action to perform when the rule matches. +type RuleNewResponseRulesRulesetsExecuteRuleAction string + +const ( + RuleNewResponseRulesRulesetsExecuteRuleActionExecute RuleNewResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r RuleNewResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleNewResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData RuleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON ruleNewResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsExecuteRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RuleNewResponseRulesRulesetsExecuteRuleActionParameters] +type ruleNewResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type RuleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON ruleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON contains +// the JSON metadata for the struct +// [RuleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type ruleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON contains +// the JSON metadata for the struct +// [RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, RuleNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleNewResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleNewResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata +// for the struct [RuleNewResponseRulesRulesetsExecuteRuleLogging] +type ruleNewResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleNewResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleNewResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleNewResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleNewResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [RuleNewResponseRulesRulesetsLogRule] +type ruleNewResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleNewResponseRulesRulesetsLogRule) implementsRulesetsRuleNewResponseRule() {} + +// The action to perform when the rule matches. +type RuleNewResponseRulesRulesetsLogRuleAction string + +const ( + RuleNewResponseRulesRulesetsLogRuleActionLog RuleNewResponseRulesRulesetsLogRuleAction = "log" +) + +func (r RuleNewResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleNewResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleNewResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for +// the struct [RuleNewResponseRulesRulesetsLogRuleLogging] +type ruleNewResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleNewResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleNewResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleNewResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleNewResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleNewResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [RuleNewResponseRulesRulesetsSkipRule] +type ruleNewResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleNewResponseRulesRulesetsSkipRule) implementsRulesetsRuleNewResponseRule() {} + +// The action to perform when the rule matches. +type RuleNewResponseRulesRulesetsSkipRuleAction string + +const ( + RuleNewResponseRulesRulesetsSkipRuleActionSkip RuleNewResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r RuleNewResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleNewResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset RuleNewResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON ruleNewResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct [RuleNewResponseRulesRulesetsSkipRuleActionParameters] +type ruleNewResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r RuleNewResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, RuleNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + RuleNewResponseRulesRulesetsSkipRuleActionParametersProductBic RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + RuleNewResponseRulesRulesetsSkipRuleActionParametersProductHot RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + RuleNewResponseRulesRulesetsSkipRuleActionParametersProductRateLimit RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + RuleNewResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + RuleNewResponseRulesRulesetsSkipRuleActionParametersProductUABlock RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + RuleNewResponseRulesRulesetsSkipRuleActionParametersProductWAF RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + RuleNewResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r RuleNewResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsSkipRuleActionParametersProductBic, RuleNewResponseRulesRulesetsSkipRuleActionParametersProductHot, RuleNewResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, RuleNewResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, RuleNewResponseRulesRulesetsSkipRuleActionParametersProductUABlock, RuleNewResponseRulesRulesetsSkipRuleActionParametersProductWAF, RuleNewResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type RuleNewResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + RuleNewResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent RuleNewResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r RuleNewResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case RuleNewResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleNewResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleNewResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// ruleNewResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata for +// the struct [RuleNewResponseRulesRulesetsSkipRuleLogging] +type ruleNewResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleNewResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleNewResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + +// A ruleset object. +type RuleDeleteResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind RuleDeleteResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase RuleDeleteResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []RuleDeleteResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON ruleDeleteResponseJSON `json:"-"` +} + +// ruleDeleteResponseJSON contains the JSON metadata for the struct +// [RuleDeleteResponse] +type ruleDeleteResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type RuleDeleteResponseKind string + +const ( + RuleDeleteResponseKindManaged RuleDeleteResponseKind = "managed" + RuleDeleteResponseKindCustom RuleDeleteResponseKind = "custom" + RuleDeleteResponseKindRoot RuleDeleteResponseKind = "root" + RuleDeleteResponseKindZone RuleDeleteResponseKind = "zone" +) + +func (r RuleDeleteResponseKind) IsKnown() bool { + switch r { + case RuleDeleteResponseKindManaged, RuleDeleteResponseKindCustom, RuleDeleteResponseKindRoot, RuleDeleteResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type RuleDeleteResponsePhase string + +const ( + RuleDeleteResponsePhaseDDoSL4 RuleDeleteResponsePhase = "ddos_l4" + RuleDeleteResponsePhaseDDoSL7 RuleDeleteResponsePhase = "ddos_l7" + RuleDeleteResponsePhaseHTTPConfigSettings RuleDeleteResponsePhase = "http_config_settings" + RuleDeleteResponsePhaseHTTPCustomErrors RuleDeleteResponsePhase = "http_custom_errors" + RuleDeleteResponsePhaseHTTPLogCustomFields RuleDeleteResponsePhase = "http_log_custom_fields" + RuleDeleteResponsePhaseHTTPRatelimit RuleDeleteResponsePhase = "http_ratelimit" + RuleDeleteResponsePhaseHTTPRequestCacheSettings RuleDeleteResponsePhase = "http_request_cache_settings" + RuleDeleteResponsePhaseHTTPRequestDynamicRedirect RuleDeleteResponsePhase = "http_request_dynamic_redirect" + RuleDeleteResponsePhaseHTTPRequestFirewallCustom RuleDeleteResponsePhase = "http_request_firewall_custom" + RuleDeleteResponsePhaseHTTPRequestFirewallManaged RuleDeleteResponsePhase = "http_request_firewall_managed" + RuleDeleteResponsePhaseHTTPRequestLateTransform RuleDeleteResponsePhase = "http_request_late_transform" + RuleDeleteResponsePhaseHTTPRequestOrigin RuleDeleteResponsePhase = "http_request_origin" + RuleDeleteResponsePhaseHTTPRequestRedirect RuleDeleteResponsePhase = "http_request_redirect" + RuleDeleteResponsePhaseHTTPRequestSanitize RuleDeleteResponsePhase = "http_request_sanitize" + RuleDeleteResponsePhaseHTTPRequestSbfm RuleDeleteResponsePhase = "http_request_sbfm" + RuleDeleteResponsePhaseHTTPRequestSelectConfiguration RuleDeleteResponsePhase = "http_request_select_configuration" + RuleDeleteResponsePhaseHTTPRequestTransform RuleDeleteResponsePhase = "http_request_transform" + RuleDeleteResponsePhaseHTTPResponseCompression RuleDeleteResponsePhase = "http_response_compression" + RuleDeleteResponsePhaseHTTPResponseFirewallManaged RuleDeleteResponsePhase = "http_response_firewall_managed" + RuleDeleteResponsePhaseHTTPResponseHeadersTransform RuleDeleteResponsePhase = "http_response_headers_transform" + RuleDeleteResponsePhaseMagicTransit RuleDeleteResponsePhase = "magic_transit" + RuleDeleteResponsePhaseMagicTransitIDsManaged RuleDeleteResponsePhase = "magic_transit_ids_managed" + RuleDeleteResponsePhaseMagicTransitManaged RuleDeleteResponsePhase = "magic_transit_managed" +) + +func (r RuleDeleteResponsePhase) IsKnown() bool { + switch r { + case RuleDeleteResponsePhaseDDoSL4, RuleDeleteResponsePhaseDDoSL7, RuleDeleteResponsePhaseHTTPConfigSettings, RuleDeleteResponsePhaseHTTPCustomErrors, RuleDeleteResponsePhaseHTTPLogCustomFields, RuleDeleteResponsePhaseHTTPRatelimit, RuleDeleteResponsePhaseHTTPRequestCacheSettings, RuleDeleteResponsePhaseHTTPRequestDynamicRedirect, RuleDeleteResponsePhaseHTTPRequestFirewallCustom, RuleDeleteResponsePhaseHTTPRequestFirewallManaged, RuleDeleteResponsePhaseHTTPRequestLateTransform, RuleDeleteResponsePhaseHTTPRequestOrigin, RuleDeleteResponsePhaseHTTPRequestRedirect, RuleDeleteResponsePhaseHTTPRequestSanitize, RuleDeleteResponsePhaseHTTPRequestSbfm, RuleDeleteResponsePhaseHTTPRequestSelectConfiguration, RuleDeleteResponsePhaseHTTPRequestTransform, RuleDeleteResponsePhaseHTTPResponseCompression, RuleDeleteResponsePhaseHTTPResponseFirewallManaged, RuleDeleteResponsePhaseHTTPResponseHeadersTransform, RuleDeleteResponsePhaseMagicTransit, RuleDeleteResponsePhaseMagicTransitIDsManaged, RuleDeleteResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.RuleDeleteResponseRulesRulesetsBlockRule], +// [rulesets.RuleDeleteResponseRulesRulesetsExecuteRule], +// [rulesets.RuleDeleteResponseRulesRulesetsLogRule] or +// [rulesets.RuleDeleteResponseRulesRulesetsSkipRule]. +type RuleDeleteResponseRule interface { + implementsRulesetsRuleDeleteResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*RuleDeleteResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleDeleteResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleDeleteResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleDeleteResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleDeleteResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type RuleDeleteResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleDeleteResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleDeleteResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleDeleteResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleDeleteResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [RuleDeleteResponseRulesRulesetsBlockRule] +type ruleDeleteResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleDeleteResponseRulesRulesetsBlockRule) implementsRulesetsRuleDeleteResponseRule() {} + +// The action to perform when the rule matches. +type RuleDeleteResponseRulesRulesetsBlockRuleAction string + +const ( + RuleDeleteResponseRulesRulesetsBlockRuleActionBlock RuleDeleteResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r RuleDeleteResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleDeleteResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response RuleDeleteResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON ruleDeleteResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RuleDeleteResponseRulesRulesetsBlockRuleActionParameters] +type ruleDeleteResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type RuleDeleteResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON ruleDeleteResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains +// the JSON metadata for the struct +// [RuleDeleteResponseRulesRulesetsBlockRuleActionParametersResponse] +type ruleDeleteResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type RuleDeleteResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleDeleteResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata +// for the struct [RuleDeleteResponseRulesRulesetsBlockRuleLogging] +type ruleDeleteResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleDeleteResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleDeleteResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleDeleteResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleDeleteResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleDeleteResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for +// the struct [RuleDeleteResponseRulesRulesetsExecuteRule] +type ruleDeleteResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleDeleteResponseRulesRulesetsExecuteRule) implementsRulesetsRuleDeleteResponseRule() {} + +// The action to perform when the rule matches. +type RuleDeleteResponseRulesRulesetsExecuteRuleAction string + +const ( + RuleDeleteResponseRulesRulesetsExecuteRuleActionExecute RuleDeleteResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r RuleDeleteResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RuleDeleteResponseRulesRulesetsExecuteRuleActionParameters] +type ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON contains +// the JSON metadata for the struct +// [RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, RuleDeleteResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleDeleteResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleDeleteResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata +// for the struct [RuleDeleteResponseRulesRulesetsExecuteRuleLogging] +type ruleDeleteResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleDeleteResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleDeleteResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleDeleteResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleDeleteResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [RuleDeleteResponseRulesRulesetsLogRule] +type ruleDeleteResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleDeleteResponseRulesRulesetsLogRule) implementsRulesetsRuleDeleteResponseRule() {} + +// The action to perform when the rule matches. +type RuleDeleteResponseRulesRulesetsLogRuleAction string + +const ( + RuleDeleteResponseRulesRulesetsLogRuleActionLog RuleDeleteResponseRulesRulesetsLogRuleAction = "log" +) + +func (r RuleDeleteResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleDeleteResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleDeleteResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for +// the struct [RuleDeleteResponseRulesRulesetsLogRuleLogging] +type ruleDeleteResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleDeleteResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleDeleteResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleDeleteResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleDeleteResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleDeleteResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [RuleDeleteResponseRulesRulesetsSkipRule] +type ruleDeleteResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleDeleteResponseRulesRulesetsSkipRule) implementsRulesetsRuleDeleteResponseRule() {} + +// The action to perform when the rule matches. +type RuleDeleteResponseRulesRulesetsSkipRuleAction string + +const ( + RuleDeleteResponseRulesRulesetsSkipRuleActionSkip RuleDeleteResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r RuleDeleteResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleDeleteResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset RuleDeleteResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON ruleDeleteResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RuleDeleteResponseRulesRulesetsSkipRuleActionParameters] +type ruleDeleteResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductBic RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductHot RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductRateLimit RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductUABlock RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductWAF RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductBic, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductHot, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductUABlock, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductWAF, RuleDeleteResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type RuleDeleteResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + RuleDeleteResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent RuleDeleteResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r RuleDeleteResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case RuleDeleteResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleDeleteResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleDeleteResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// ruleDeleteResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata +// for the struct [RuleDeleteResponseRulesRulesetsSkipRuleLogging] +type ruleDeleteResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleDeleteResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleDeleteResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + +// A ruleset object. +type RuleEditResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind RuleEditResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase RuleEditResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []RuleEditResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON ruleEditResponseJSON `json:"-"` +} + +// ruleEditResponseJSON contains the JSON metadata for the struct +// [RuleEditResponse] +type ruleEditResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type RuleEditResponseKind string + +const ( + RuleEditResponseKindManaged RuleEditResponseKind = "managed" + RuleEditResponseKindCustom RuleEditResponseKind = "custom" + RuleEditResponseKindRoot RuleEditResponseKind = "root" + RuleEditResponseKindZone RuleEditResponseKind = "zone" +) + +func (r RuleEditResponseKind) IsKnown() bool { + switch r { + case RuleEditResponseKindManaged, RuleEditResponseKindCustom, RuleEditResponseKindRoot, RuleEditResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type RuleEditResponsePhase string + +const ( + RuleEditResponsePhaseDDoSL4 RuleEditResponsePhase = "ddos_l4" + RuleEditResponsePhaseDDoSL7 RuleEditResponsePhase = "ddos_l7" + RuleEditResponsePhaseHTTPConfigSettings RuleEditResponsePhase = "http_config_settings" + RuleEditResponsePhaseHTTPCustomErrors RuleEditResponsePhase = "http_custom_errors" + RuleEditResponsePhaseHTTPLogCustomFields RuleEditResponsePhase = "http_log_custom_fields" + RuleEditResponsePhaseHTTPRatelimit RuleEditResponsePhase = "http_ratelimit" + RuleEditResponsePhaseHTTPRequestCacheSettings RuleEditResponsePhase = "http_request_cache_settings" + RuleEditResponsePhaseHTTPRequestDynamicRedirect RuleEditResponsePhase = "http_request_dynamic_redirect" + RuleEditResponsePhaseHTTPRequestFirewallCustom RuleEditResponsePhase = "http_request_firewall_custom" + RuleEditResponsePhaseHTTPRequestFirewallManaged RuleEditResponsePhase = "http_request_firewall_managed" + RuleEditResponsePhaseHTTPRequestLateTransform RuleEditResponsePhase = "http_request_late_transform" + RuleEditResponsePhaseHTTPRequestOrigin RuleEditResponsePhase = "http_request_origin" + RuleEditResponsePhaseHTTPRequestRedirect RuleEditResponsePhase = "http_request_redirect" + RuleEditResponsePhaseHTTPRequestSanitize RuleEditResponsePhase = "http_request_sanitize" + RuleEditResponsePhaseHTTPRequestSbfm RuleEditResponsePhase = "http_request_sbfm" + RuleEditResponsePhaseHTTPRequestSelectConfiguration RuleEditResponsePhase = "http_request_select_configuration" + RuleEditResponsePhaseHTTPRequestTransform RuleEditResponsePhase = "http_request_transform" + RuleEditResponsePhaseHTTPResponseCompression RuleEditResponsePhase = "http_response_compression" + RuleEditResponsePhaseHTTPResponseFirewallManaged RuleEditResponsePhase = "http_response_firewall_managed" + RuleEditResponsePhaseHTTPResponseHeadersTransform RuleEditResponsePhase = "http_response_headers_transform" + RuleEditResponsePhaseMagicTransit RuleEditResponsePhase = "magic_transit" + RuleEditResponsePhaseMagicTransitIDsManaged RuleEditResponsePhase = "magic_transit_ids_managed" + RuleEditResponsePhaseMagicTransitManaged RuleEditResponsePhase = "magic_transit_managed" +) + +func (r RuleEditResponsePhase) IsKnown() bool { + switch r { + case RuleEditResponsePhaseDDoSL4, RuleEditResponsePhaseDDoSL7, RuleEditResponsePhaseHTTPConfigSettings, RuleEditResponsePhaseHTTPCustomErrors, RuleEditResponsePhaseHTTPLogCustomFields, RuleEditResponsePhaseHTTPRatelimit, RuleEditResponsePhaseHTTPRequestCacheSettings, RuleEditResponsePhaseHTTPRequestDynamicRedirect, RuleEditResponsePhaseHTTPRequestFirewallCustom, RuleEditResponsePhaseHTTPRequestFirewallManaged, RuleEditResponsePhaseHTTPRequestLateTransform, RuleEditResponsePhaseHTTPRequestOrigin, RuleEditResponsePhaseHTTPRequestRedirect, RuleEditResponsePhaseHTTPRequestSanitize, RuleEditResponsePhaseHTTPRequestSbfm, RuleEditResponsePhaseHTTPRequestSelectConfiguration, RuleEditResponsePhaseHTTPRequestTransform, RuleEditResponsePhaseHTTPResponseCompression, RuleEditResponsePhaseHTTPResponseFirewallManaged, RuleEditResponsePhaseHTTPResponseHeadersTransform, RuleEditResponsePhaseMagicTransit, RuleEditResponsePhaseMagicTransitIDsManaged, RuleEditResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.RuleEditResponseRulesRulesetsBlockRule], +// [rulesets.RuleEditResponseRulesRulesetsExecuteRule], +// [rulesets.RuleEditResponseRulesRulesetsLogRule] or +// [rulesets.RuleEditResponseRulesRulesetsSkipRule]. +type RuleEditResponseRule interface { + implementsRulesetsRuleEditResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*RuleEditResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleEditResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleEditResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleEditResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RuleEditResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type RuleEditResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleEditResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleEditResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleEditResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleEditResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [RuleEditResponseRulesRulesetsBlockRule] +type ruleEditResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleEditResponseRulesRulesetsBlockRule) implementsRulesetsRuleEditResponseRule() {} + +// The action to perform when the rule matches. +type RuleEditResponseRulesRulesetsBlockRuleAction string + +const ( + RuleEditResponseRulesRulesetsBlockRuleActionBlock RuleEditResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r RuleEditResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleEditResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response RuleEditResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON ruleEditResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct [RuleEditResponseRulesRulesetsBlockRuleActionParameters] +type ruleEditResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type RuleEditResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON ruleEditResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains the +// JSON metadata for the struct +// [RuleEditResponseRulesRulesetsBlockRuleActionParametersResponse] +type ruleEditResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type RuleEditResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleEditResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata for +// the struct [RuleEditResponseRulesRulesetsBlockRuleLogging] +type ruleEditResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleEditResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleEditResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleEditResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleEditResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleEditResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for the +// struct [RuleEditResponseRulesRulesetsExecuteRule] +type ruleEditResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleEditResponseRulesRulesetsExecuteRule) implementsRulesetsRuleEditResponseRule() {} + +// The action to perform when the rule matches. +type RuleEditResponseRulesRulesetsExecuteRuleAction string + +const ( + RuleEditResponseRulesRulesetsExecuteRuleActionExecute RuleEditResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r RuleEditResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleEditResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData RuleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON ruleEditResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsExecuteRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RuleEditResponseRulesRulesetsExecuteRuleActionParameters] +type ruleEditResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type RuleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON ruleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON contains +// the JSON metadata for the struct +// [RuleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type ruleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON contains +// the JSON metadata for the struct +// [RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, RuleEditResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleEditResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleEditResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata +// for the struct [RuleEditResponseRulesRulesetsExecuteRuleLogging] +type ruleEditResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleEditResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleEditResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleEditResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleEditResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [RuleEditResponseRulesRulesetsLogRule] +type ruleEditResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleEditResponseRulesRulesetsLogRule) implementsRulesetsRuleEditResponseRule() {} + +// The action to perform when the rule matches. +type RuleEditResponseRulesRulesetsLogRuleAction string + +const ( + RuleEditResponseRulesRulesetsLogRuleActionLog RuleEditResponseRulesRulesetsLogRuleAction = "log" +) + +func (r RuleEditResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleEditResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleEditResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for +// the struct [RuleEditResponseRulesRulesetsLogRuleLogging] +type ruleEditResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RuleEditResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RuleEditResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RuleEditResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RuleEditResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON ruleEditResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [RuleEditResponseRulesRulesetsSkipRule] +type ruleEditResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r RuleEditResponseRulesRulesetsSkipRule) implementsRulesetsRuleEditResponseRule() {} + +// The action to perform when the rule matches. +type RuleEditResponseRulesRulesetsSkipRuleAction string + +const ( + RuleEditResponseRulesRulesetsSkipRuleActionSkip RuleEditResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r RuleEditResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RuleEditResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset RuleEditResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON ruleEditResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct [RuleEditResponseRulesRulesetsSkipRuleActionParameters] +type ruleEditResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r RuleEditResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, RuleEditResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + RuleEditResponseRulesRulesetsSkipRuleActionParametersProductBic RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + RuleEditResponseRulesRulesetsSkipRuleActionParametersProductHot RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + RuleEditResponseRulesRulesetsSkipRuleActionParametersProductRateLimit RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + RuleEditResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + RuleEditResponseRulesRulesetsSkipRuleActionParametersProductUABlock RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + RuleEditResponseRulesRulesetsSkipRuleActionParametersProductWAF RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + RuleEditResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r RuleEditResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsSkipRuleActionParametersProductBic, RuleEditResponseRulesRulesetsSkipRuleActionParametersProductHot, RuleEditResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, RuleEditResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, RuleEditResponseRulesRulesetsSkipRuleActionParametersProductUABlock, RuleEditResponseRulesRulesetsSkipRuleActionParametersProductWAF, RuleEditResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type RuleEditResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + RuleEditResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent RuleEditResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r RuleEditResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case RuleEditResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RuleEditResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON ruleEditResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// ruleEditResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata for +// the struct [RuleEditResponseRulesRulesetsSkipRuleLogging] +type ruleEditResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RuleEditResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r ruleEditResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + // This interface is a union satisfied by one of the following: // [RuleNewParamsRulesetsBlockRule], [RuleNewParamsRulesetsExecuteRule], // [RuleNewParamsRulesetsLogRule], [RuleNewParamsRulesetsSkipRule]. @@ -625,8 +3287,8 @@ type RuleNewResponseEnvelope struct { Errors []RuleNewResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []RuleNewResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result RuleNewResponse `json:"result,required"` // Whether the API call was successful. Success RuleNewResponseEnvelopeSuccess `json:"success,required"` JSON ruleNewResponseEnvelopeJSON `json:"-"` @@ -783,8 +3445,8 @@ type RuleDeleteResponseEnvelope struct { Errors []RuleDeleteResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []RuleDeleteResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result RuleDeleteResponse `json:"result,required"` // Whether the API call was successful. Success RuleDeleteResponseEnvelopeSuccess `json:"success,required"` JSON ruleDeleteResponseEnvelopeJSON `json:"-"` @@ -1456,8 +4118,8 @@ type RuleEditResponseEnvelope struct { Errors []RuleEditResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []RuleEditResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result RuleEditResponse `json:"result,required"` // Whether the API call was successful. Success RuleEditResponseEnvelopeSuccess `json:"success,required"` JSON ruleEditResponseEnvelopeJSON `json:"-"` diff --git a/rulesets/ruleset.go b/rulesets/ruleset.go index a2f0938a51..e70fe4e5e1 100644 --- a/rulesets/ruleset.go +++ b/rulesets/ruleset.go @@ -41,7 +41,7 @@ func NewRulesetService(opts ...option.RequestOption) (r *RulesetService) { } // Creates a ruleset. -func (r *RulesetService) New(ctx context.Context, params RulesetNewParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *RulesetService) New(ctx context.Context, params RulesetNewParams, opts ...option.RequestOption) (res *RulesetNewResponse, err error) { opts = append(r.Options[:], opts...) var env RulesetNewResponseEnvelope var accountOrZone string @@ -63,7 +63,7 @@ func (r *RulesetService) New(ctx context.Context, params RulesetNewParams, opts } // Updates an account or zone ruleset, creating a new version. -func (r *RulesetService) Update(ctx context.Context, rulesetID string, params RulesetUpdateParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *RulesetService) Update(ctx context.Context, rulesetID string, params RulesetUpdateParams, opts ...option.RequestOption) (res *RulesetUpdateResponse, err error) { opts = append(r.Options[:], opts...) var env RulesetUpdateResponseEnvelope var accountOrZone string @@ -135,7 +135,7 @@ func (r *RulesetService) Delete(ctx context.Context, rulesetID string, body Rule } // Fetches the latest version of an account or zone ruleset. -func (r *RulesetService) Get(ctx context.Context, rulesetID string, query RulesetGetParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *RulesetService) Get(ctx context.Context, rulesetID string, query RulesetGetParams, opts ...option.RequestOption) (res *RulesetGetResponse, err error) { opts = append(r.Options[:], opts...) var env RulesetGetResponseEnvelope var accountOrZone string @@ -157,28 +157,29 @@ func (r *RulesetService) Get(ctx context.Context, rulesetID string, query Rulese } // A ruleset object. -type Ruleset struct { +type RulesetNewResponse struct { // The unique ID of the ruleset. ID string `json:"id,required"` // The kind of the ruleset. - Kind RulesetKind `json:"kind,required"` + Kind RulesetNewResponseKind `json:"kind,required"` // The timestamp of when the ruleset was last modified. LastUpdated time.Time `json:"last_updated,required" format:"date-time"` // The human-readable name of the ruleset. Name string `json:"name,required"` // The phase of the ruleset. - Phase RulesetPhase `json:"phase,required"` + Phase RulesetNewResponsePhase `json:"phase,required"` // The list of rules in the ruleset. - Rules []RulesetRule `json:"rules,required"` + Rules []RulesetNewResponseRule `json:"rules,required"` // The version of the ruleset. Version string `json:"version,required"` // An informative description of the ruleset. - Description string `json:"description"` - JSON rulesetJSON `json:"-"` + Description string `json:"description"` + JSON rulesetNewResponseJSON `json:"-"` } -// rulesetJSON contains the JSON metadata for the struct [Ruleset] -type rulesetJSON struct { +// rulesetNewResponseJSON contains the JSON metadata for the struct +// [RulesetNewResponse] +type rulesetNewResponseJSON struct { ID apijson.Field Kind apijson.Field LastUpdated apijson.Field @@ -191,105 +192,105 @@ type rulesetJSON struct { ExtraFields map[string]apijson.Field } -func (r *Ruleset) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetNewResponse) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetJSON) RawJSON() string { +func (r rulesetNewResponseJSON) RawJSON() string { return r.raw } // The kind of the ruleset. -type RulesetKind string +type RulesetNewResponseKind string const ( - RulesetKindManaged RulesetKind = "managed" - RulesetKindCustom RulesetKind = "custom" - RulesetKindRoot RulesetKind = "root" - RulesetKindZone RulesetKind = "zone" + RulesetNewResponseKindManaged RulesetNewResponseKind = "managed" + RulesetNewResponseKindCustom RulesetNewResponseKind = "custom" + RulesetNewResponseKindRoot RulesetNewResponseKind = "root" + RulesetNewResponseKindZone RulesetNewResponseKind = "zone" ) -func (r RulesetKind) IsKnown() bool { +func (r RulesetNewResponseKind) IsKnown() bool { switch r { - case RulesetKindManaged, RulesetKindCustom, RulesetKindRoot, RulesetKindZone: + case RulesetNewResponseKindManaged, RulesetNewResponseKindCustom, RulesetNewResponseKindRoot, RulesetNewResponseKindZone: return true } return false } // The phase of the ruleset. -type RulesetPhase string +type RulesetNewResponsePhase string const ( - RulesetPhaseDDoSL4 RulesetPhase = "ddos_l4" - RulesetPhaseDDoSL7 RulesetPhase = "ddos_l7" - RulesetPhaseHTTPConfigSettings RulesetPhase = "http_config_settings" - RulesetPhaseHTTPCustomErrors RulesetPhase = "http_custom_errors" - RulesetPhaseHTTPLogCustomFields RulesetPhase = "http_log_custom_fields" - RulesetPhaseHTTPRatelimit RulesetPhase = "http_ratelimit" - RulesetPhaseHTTPRequestCacheSettings RulesetPhase = "http_request_cache_settings" - RulesetPhaseHTTPRequestDynamicRedirect RulesetPhase = "http_request_dynamic_redirect" - RulesetPhaseHTTPRequestFirewallCustom RulesetPhase = "http_request_firewall_custom" - RulesetPhaseHTTPRequestFirewallManaged RulesetPhase = "http_request_firewall_managed" - RulesetPhaseHTTPRequestLateTransform RulesetPhase = "http_request_late_transform" - RulesetPhaseHTTPRequestOrigin RulesetPhase = "http_request_origin" - RulesetPhaseHTTPRequestRedirect RulesetPhase = "http_request_redirect" - RulesetPhaseHTTPRequestSanitize RulesetPhase = "http_request_sanitize" - RulesetPhaseHTTPRequestSbfm RulesetPhase = "http_request_sbfm" - RulesetPhaseHTTPRequestSelectConfiguration RulesetPhase = "http_request_select_configuration" - RulesetPhaseHTTPRequestTransform RulesetPhase = "http_request_transform" - RulesetPhaseHTTPResponseCompression RulesetPhase = "http_response_compression" - RulesetPhaseHTTPResponseFirewallManaged RulesetPhase = "http_response_firewall_managed" - RulesetPhaseHTTPResponseHeadersTransform RulesetPhase = "http_response_headers_transform" - RulesetPhaseMagicTransit RulesetPhase = "magic_transit" - RulesetPhaseMagicTransitIDsManaged RulesetPhase = "magic_transit_ids_managed" - RulesetPhaseMagicTransitManaged RulesetPhase = "magic_transit_managed" + RulesetNewResponsePhaseDDoSL4 RulesetNewResponsePhase = "ddos_l4" + RulesetNewResponsePhaseDDoSL7 RulesetNewResponsePhase = "ddos_l7" + RulesetNewResponsePhaseHTTPConfigSettings RulesetNewResponsePhase = "http_config_settings" + RulesetNewResponsePhaseHTTPCustomErrors RulesetNewResponsePhase = "http_custom_errors" + RulesetNewResponsePhaseHTTPLogCustomFields RulesetNewResponsePhase = "http_log_custom_fields" + RulesetNewResponsePhaseHTTPRatelimit RulesetNewResponsePhase = "http_ratelimit" + RulesetNewResponsePhaseHTTPRequestCacheSettings RulesetNewResponsePhase = "http_request_cache_settings" + RulesetNewResponsePhaseHTTPRequestDynamicRedirect RulesetNewResponsePhase = "http_request_dynamic_redirect" + RulesetNewResponsePhaseHTTPRequestFirewallCustom RulesetNewResponsePhase = "http_request_firewall_custom" + RulesetNewResponsePhaseHTTPRequestFirewallManaged RulesetNewResponsePhase = "http_request_firewall_managed" + RulesetNewResponsePhaseHTTPRequestLateTransform RulesetNewResponsePhase = "http_request_late_transform" + RulesetNewResponsePhaseHTTPRequestOrigin RulesetNewResponsePhase = "http_request_origin" + RulesetNewResponsePhaseHTTPRequestRedirect RulesetNewResponsePhase = "http_request_redirect" + RulesetNewResponsePhaseHTTPRequestSanitize RulesetNewResponsePhase = "http_request_sanitize" + RulesetNewResponsePhaseHTTPRequestSbfm RulesetNewResponsePhase = "http_request_sbfm" + RulesetNewResponsePhaseHTTPRequestSelectConfiguration RulesetNewResponsePhase = "http_request_select_configuration" + RulesetNewResponsePhaseHTTPRequestTransform RulesetNewResponsePhase = "http_request_transform" + RulesetNewResponsePhaseHTTPResponseCompression RulesetNewResponsePhase = "http_response_compression" + RulesetNewResponsePhaseHTTPResponseFirewallManaged RulesetNewResponsePhase = "http_response_firewall_managed" + RulesetNewResponsePhaseHTTPResponseHeadersTransform RulesetNewResponsePhase = "http_response_headers_transform" + RulesetNewResponsePhaseMagicTransit RulesetNewResponsePhase = "magic_transit" + RulesetNewResponsePhaseMagicTransitIDsManaged RulesetNewResponsePhase = "magic_transit_ids_managed" + RulesetNewResponsePhaseMagicTransitManaged RulesetNewResponsePhase = "magic_transit_managed" ) -func (r RulesetPhase) IsKnown() bool { +func (r RulesetNewResponsePhase) IsKnown() bool { switch r { - case RulesetPhaseDDoSL4, RulesetPhaseDDoSL7, RulesetPhaseHTTPConfigSettings, RulesetPhaseHTTPCustomErrors, RulesetPhaseHTTPLogCustomFields, RulesetPhaseHTTPRatelimit, RulesetPhaseHTTPRequestCacheSettings, RulesetPhaseHTTPRequestDynamicRedirect, RulesetPhaseHTTPRequestFirewallCustom, RulesetPhaseHTTPRequestFirewallManaged, RulesetPhaseHTTPRequestLateTransform, RulesetPhaseHTTPRequestOrigin, RulesetPhaseHTTPRequestRedirect, RulesetPhaseHTTPRequestSanitize, RulesetPhaseHTTPRequestSbfm, RulesetPhaseHTTPRequestSelectConfiguration, RulesetPhaseHTTPRequestTransform, RulesetPhaseHTTPResponseCompression, RulesetPhaseHTTPResponseFirewallManaged, RulesetPhaseHTTPResponseHeadersTransform, RulesetPhaseMagicTransit, RulesetPhaseMagicTransitIDsManaged, RulesetPhaseMagicTransitManaged: + case RulesetNewResponsePhaseDDoSL4, RulesetNewResponsePhaseDDoSL7, RulesetNewResponsePhaseHTTPConfigSettings, RulesetNewResponsePhaseHTTPCustomErrors, RulesetNewResponsePhaseHTTPLogCustomFields, RulesetNewResponsePhaseHTTPRatelimit, RulesetNewResponsePhaseHTTPRequestCacheSettings, RulesetNewResponsePhaseHTTPRequestDynamicRedirect, RulesetNewResponsePhaseHTTPRequestFirewallCustom, RulesetNewResponsePhaseHTTPRequestFirewallManaged, RulesetNewResponsePhaseHTTPRequestLateTransform, RulesetNewResponsePhaseHTTPRequestOrigin, RulesetNewResponsePhaseHTTPRequestRedirect, RulesetNewResponsePhaseHTTPRequestSanitize, RulesetNewResponsePhaseHTTPRequestSbfm, RulesetNewResponsePhaseHTTPRequestSelectConfiguration, RulesetNewResponsePhaseHTTPRequestTransform, RulesetNewResponsePhaseHTTPResponseCompression, RulesetNewResponsePhaseHTTPResponseFirewallManaged, RulesetNewResponsePhaseHTTPResponseHeadersTransform, RulesetNewResponsePhaseMagicTransit, RulesetNewResponsePhaseMagicTransitIDsManaged, RulesetNewResponsePhaseMagicTransitManaged: return true } return false } -// Union satisfied by [rulesets.RulesetRulesRulesetsBlockRule], -// [rulesets.RulesetRulesRulesetsExecuteRule], -// [rulesets.RulesetRulesRulesetsLogRule] or -// [rulesets.RulesetRulesRulesetsSkipRule]. -type RulesetRule interface { - implementsRulesetsRulesetRule() +// Union satisfied by [rulesets.RulesetNewResponseRulesRulesetsBlockRule], +// [rulesets.RulesetNewResponseRulesRulesetsExecuteRule], +// [rulesets.RulesetNewResponseRulesRulesetsLogRule] or +// [rulesets.RulesetNewResponseRulesRulesetsSkipRule]. +type RulesetNewResponseRule interface { + implementsRulesetsRulesetNewResponseRule() } func init() { apijson.RegisterUnion( - reflect.TypeOf((*RulesetRule)(nil)).Elem(), + reflect.TypeOf((*RulesetNewResponseRule)(nil)).Elem(), "action", apijson.UnionVariant{ TypeFilter: gjson.JSON, - Type: reflect.TypeOf(RulesetRulesRulesetsBlockRule{}), + Type: reflect.TypeOf(RulesetNewResponseRulesRulesetsBlockRule{}), DiscriminatorValue: "block", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, - Type: reflect.TypeOf(RulesetRulesRulesetsExecuteRule{}), + Type: reflect.TypeOf(RulesetNewResponseRulesRulesetsExecuteRule{}), DiscriminatorValue: "execute", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, - Type: reflect.TypeOf(RulesetRulesRulesetsLogRule{}), + Type: reflect.TypeOf(RulesetNewResponseRulesRulesetsLogRule{}), DiscriminatorValue: "log", }, apijson.UnionVariant{ TypeFilter: gjson.JSON, - Type: reflect.TypeOf(RulesetRulesRulesetsSkipRule{}), + Type: reflect.TypeOf(RulesetNewResponseRulesRulesetsSkipRule{}), DiscriminatorValue: "skip", }, ) } -type RulesetRulesRulesetsBlockRule struct { +type RulesetNewResponseRulesRulesetsBlockRule struct { // The timestamp of when the rule was last modified. LastUpdated time.Time `json:"last_updated,required" format:"date-time"` // The version of the rule. @@ -297,9 +298,9 @@ type RulesetRulesRulesetsBlockRule struct { // The unique ID of the rule. ID string `json:"id"` // The action to perform when the rule matches. - Action RulesetRulesRulesetsBlockRuleAction `json:"action"` + Action RulesetNewResponseRulesRulesetsBlockRuleAction `json:"action"` // The parameters configuring the rule's action. - ActionParameters RulesetRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + ActionParameters RulesetNewResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` // The categories of the rule. Categories []string `json:"categories"` // An informative description of the rule. @@ -309,15 +310,15 @@ type RulesetRulesRulesetsBlockRule struct { // The expression defining which traffic will match the rule. Expression string `json:"expression"` // An object configuring the rule's logging behavior. - Logging RulesetRulesRulesetsBlockRuleLogging `json:"logging"` + Logging RulesetNewResponseRulesRulesetsBlockRuleLogging `json:"logging"` // The reference of the rule (the rule ID by default). - Ref string `json:"ref"` - JSON rulesetRulesRulesetsBlockRuleJSON `json:"-"` + Ref string `json:"ref"` + JSON rulesetNewResponseRulesRulesetsBlockRuleJSON `json:"-"` } -// rulesetRulesRulesetsBlockRuleJSON contains the JSON metadata for the struct -// [RulesetRulesRulesetsBlockRule] -type rulesetRulesRulesetsBlockRuleJSON struct { +// rulesetNewResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [RulesetNewResponseRulesRulesetsBlockRule] +type rulesetNewResponseRulesRulesetsBlockRuleJSON struct { LastUpdated apijson.Field Version apijson.Field ID apijson.Field @@ -333,68 +334,1943 @@ type rulesetRulesRulesetsBlockRuleJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetNewResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsBlockRuleJSON) RawJSON() string { +func (r rulesetNewResponseRulesRulesetsBlockRuleJSON) RawJSON() string { return r.raw } -func (r RulesetRulesRulesetsBlockRule) implementsRulesetsRulesetRule() {} +func (r RulesetNewResponseRulesRulesetsBlockRule) implementsRulesetsRulesetNewResponseRule() {} // The action to perform when the rule matches. -type RulesetRulesRulesetsBlockRuleAction string +type RulesetNewResponseRulesRulesetsBlockRuleAction string const ( - RulesetRulesRulesetsBlockRuleActionBlock RulesetRulesRulesetsBlockRuleAction = "block" + RulesetNewResponseRulesRulesetsBlockRuleActionBlock RulesetNewResponseRulesRulesetsBlockRuleAction = "block" ) -func (r RulesetRulesRulesetsBlockRuleAction) IsKnown() bool { +func (r RulesetNewResponseRulesRulesetsBlockRuleAction) IsKnown() bool { switch r { - case RulesetRulesRulesetsBlockRuleActionBlock: + case RulesetNewResponseRulesRulesetsBlockRuleActionBlock: return true } return false } // The parameters configuring the rule's action. -type RulesetRulesRulesetsBlockRuleActionParameters struct { +type RulesetNewResponseRulesRulesetsBlockRuleActionParameters struct { // The response to show when the block is applied. - Response RulesetRulesRulesetsBlockRuleActionParametersResponse `json:"response"` - JSON rulesetRulesRulesetsBlockRuleActionParametersJSON `json:"-"` + Response RulesetNewResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON rulesetNewResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` } -// rulesetRulesRulesetsBlockRuleActionParametersJSON contains the JSON metadata for -// the struct [RulesetRulesRulesetsBlockRuleActionParameters] -type rulesetRulesRulesetsBlockRuleActionParametersJSON struct { +// rulesetNewResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RulesetNewResponseRulesRulesetsBlockRuleActionParameters] +type rulesetNewResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type RulesetNewResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON rulesetNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains +// the JSON metadata for the struct +// [RulesetNewResponseRulesRulesetsBlockRuleActionParametersResponse] +type rulesetNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type RulesetNewResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetNewResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetNewResponseRulesRulesetsBlockRuleLogging] +type rulesetNewResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RulesetNewResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetNewResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RulesetNewResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetNewResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetNewResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for +// the struct [RulesetNewResponseRulesRulesetsExecuteRule] +type rulesetNewResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetNewResponseRulesRulesetsExecuteRule) implementsRulesetsRulesetNewResponseRule() {} + +// The action to perform when the rule matches. +type RulesetNewResponseRulesRulesetsExecuteRuleAction string + +const ( + RulesetNewResponseRulesRulesetsExecuteRuleActionExecute RulesetNewResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r RulesetNewResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RulesetNewResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData RulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON rulesetNewResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsExecuteRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RulesetNewResponseRulesRulesetsExecuteRuleActionParameters] +type rulesetNewResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type RulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON rulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [RulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type rulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON contains +// the JSON metadata for the struct +// [RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, RulesetNewResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RulesetNewResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetNewResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetNewResponseRulesRulesetsExecuteRuleLogging] +type rulesetNewResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RulesetNewResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetNewResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetNewResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetNewResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [RulesetNewResponseRulesRulesetsLogRule] +type rulesetNewResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetNewResponseRulesRulesetsLogRule) implementsRulesetsRulesetNewResponseRule() {} + +// The action to perform when the rule matches. +type RulesetNewResponseRulesRulesetsLogRuleAction string + +const ( + RulesetNewResponseRulesRulesetsLogRuleActionLog RulesetNewResponseRulesRulesetsLogRuleAction = "log" +) + +func (r RulesetNewResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RulesetNewResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetNewResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for +// the struct [RulesetNewResponseRulesRulesetsLogRuleLogging] +type rulesetNewResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RulesetNewResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetNewResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RulesetNewResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetNewResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetNewResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [RulesetNewResponseRulesRulesetsSkipRule] +type rulesetNewResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetNewResponseRulesRulesetsSkipRule) implementsRulesetsRulesetNewResponseRule() {} + +// The action to perform when the rule matches. +type RulesetNewResponseRulesRulesetsSkipRuleAction string + +const ( + RulesetNewResponseRulesRulesetsSkipRuleActionSkip RulesetNewResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r RulesetNewResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RulesetNewResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset RulesetNewResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON rulesetNewResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RulesetNewResponseRulesRulesetsSkipRuleActionParameters] +type rulesetNewResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, RulesetNewResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductBic RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductHot RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductRateLimit RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductUABlock RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductWAF RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r RulesetNewResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductBic, RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductHot, RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductUABlock, RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductWAF, RulesetNewResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type RulesetNewResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + RulesetNewResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent RulesetNewResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r RulesetNewResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case RulesetNewResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RulesetNewResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetNewResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// rulesetNewResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetNewResponseRulesRulesetsSkipRuleLogging] +type rulesetNewResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetNewResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetNewResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + +// A ruleset object. +type RulesetUpdateResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind RulesetUpdateResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase RulesetUpdateResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []RulesetUpdateResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON rulesetUpdateResponseJSON `json:"-"` +} + +// rulesetUpdateResponseJSON contains the JSON metadata for the struct +// [RulesetUpdateResponse] +type rulesetUpdateResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type RulesetUpdateResponseKind string + +const ( + RulesetUpdateResponseKindManaged RulesetUpdateResponseKind = "managed" + RulesetUpdateResponseKindCustom RulesetUpdateResponseKind = "custom" + RulesetUpdateResponseKindRoot RulesetUpdateResponseKind = "root" + RulesetUpdateResponseKindZone RulesetUpdateResponseKind = "zone" +) + +func (r RulesetUpdateResponseKind) IsKnown() bool { + switch r { + case RulesetUpdateResponseKindManaged, RulesetUpdateResponseKindCustom, RulesetUpdateResponseKindRoot, RulesetUpdateResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type RulesetUpdateResponsePhase string + +const ( + RulesetUpdateResponsePhaseDDoSL4 RulesetUpdateResponsePhase = "ddos_l4" + RulesetUpdateResponsePhaseDDoSL7 RulesetUpdateResponsePhase = "ddos_l7" + RulesetUpdateResponsePhaseHTTPConfigSettings RulesetUpdateResponsePhase = "http_config_settings" + RulesetUpdateResponsePhaseHTTPCustomErrors RulesetUpdateResponsePhase = "http_custom_errors" + RulesetUpdateResponsePhaseHTTPLogCustomFields RulesetUpdateResponsePhase = "http_log_custom_fields" + RulesetUpdateResponsePhaseHTTPRatelimit RulesetUpdateResponsePhase = "http_ratelimit" + RulesetUpdateResponsePhaseHTTPRequestCacheSettings RulesetUpdateResponsePhase = "http_request_cache_settings" + RulesetUpdateResponsePhaseHTTPRequestDynamicRedirect RulesetUpdateResponsePhase = "http_request_dynamic_redirect" + RulesetUpdateResponsePhaseHTTPRequestFirewallCustom RulesetUpdateResponsePhase = "http_request_firewall_custom" + RulesetUpdateResponsePhaseHTTPRequestFirewallManaged RulesetUpdateResponsePhase = "http_request_firewall_managed" + RulesetUpdateResponsePhaseHTTPRequestLateTransform RulesetUpdateResponsePhase = "http_request_late_transform" + RulesetUpdateResponsePhaseHTTPRequestOrigin RulesetUpdateResponsePhase = "http_request_origin" + RulesetUpdateResponsePhaseHTTPRequestRedirect RulesetUpdateResponsePhase = "http_request_redirect" + RulesetUpdateResponsePhaseHTTPRequestSanitize RulesetUpdateResponsePhase = "http_request_sanitize" + RulesetUpdateResponsePhaseHTTPRequestSbfm RulesetUpdateResponsePhase = "http_request_sbfm" + RulesetUpdateResponsePhaseHTTPRequestSelectConfiguration RulesetUpdateResponsePhase = "http_request_select_configuration" + RulesetUpdateResponsePhaseHTTPRequestTransform RulesetUpdateResponsePhase = "http_request_transform" + RulesetUpdateResponsePhaseHTTPResponseCompression RulesetUpdateResponsePhase = "http_response_compression" + RulesetUpdateResponsePhaseHTTPResponseFirewallManaged RulesetUpdateResponsePhase = "http_response_firewall_managed" + RulesetUpdateResponsePhaseHTTPResponseHeadersTransform RulesetUpdateResponsePhase = "http_response_headers_transform" + RulesetUpdateResponsePhaseMagicTransit RulesetUpdateResponsePhase = "magic_transit" + RulesetUpdateResponsePhaseMagicTransitIDsManaged RulesetUpdateResponsePhase = "magic_transit_ids_managed" + RulesetUpdateResponsePhaseMagicTransitManaged RulesetUpdateResponsePhase = "magic_transit_managed" +) + +func (r RulesetUpdateResponsePhase) IsKnown() bool { + switch r { + case RulesetUpdateResponsePhaseDDoSL4, RulesetUpdateResponsePhaseDDoSL7, RulesetUpdateResponsePhaseHTTPConfigSettings, RulesetUpdateResponsePhaseHTTPCustomErrors, RulesetUpdateResponsePhaseHTTPLogCustomFields, RulesetUpdateResponsePhaseHTTPRatelimit, RulesetUpdateResponsePhaseHTTPRequestCacheSettings, RulesetUpdateResponsePhaseHTTPRequestDynamicRedirect, RulesetUpdateResponsePhaseHTTPRequestFirewallCustom, RulesetUpdateResponsePhaseHTTPRequestFirewallManaged, RulesetUpdateResponsePhaseHTTPRequestLateTransform, RulesetUpdateResponsePhaseHTTPRequestOrigin, RulesetUpdateResponsePhaseHTTPRequestRedirect, RulesetUpdateResponsePhaseHTTPRequestSanitize, RulesetUpdateResponsePhaseHTTPRequestSbfm, RulesetUpdateResponsePhaseHTTPRequestSelectConfiguration, RulesetUpdateResponsePhaseHTTPRequestTransform, RulesetUpdateResponsePhaseHTTPResponseCompression, RulesetUpdateResponsePhaseHTTPResponseFirewallManaged, RulesetUpdateResponsePhaseHTTPResponseHeadersTransform, RulesetUpdateResponsePhaseMagicTransit, RulesetUpdateResponsePhaseMagicTransitIDsManaged, RulesetUpdateResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.RulesetUpdateResponseRulesRulesetsBlockRule], +// [rulesets.RulesetUpdateResponseRulesRulesetsExecuteRule], +// [rulesets.RulesetUpdateResponseRulesRulesetsLogRule] or +// [rulesets.RulesetUpdateResponseRulesRulesetsSkipRule]. +type RulesetUpdateResponseRule interface { + implementsRulesetsRulesetUpdateResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*RulesetUpdateResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetUpdateResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetUpdateResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetUpdateResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetUpdateResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type RulesetUpdateResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetUpdateResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RulesetUpdateResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetUpdateResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetUpdateResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for +// the struct [RulesetUpdateResponseRulesRulesetsBlockRule] +type rulesetUpdateResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetUpdateResponseRulesRulesetsBlockRule) implementsRulesetsRulesetUpdateResponseRule() {} + +// The action to perform when the rule matches. +type RulesetUpdateResponseRulesRulesetsBlockRuleAction string + +const ( + RulesetUpdateResponseRulesRulesetsBlockRuleActionBlock RulesetUpdateResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r RulesetUpdateResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RulesetUpdateResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response RulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersJSON contains the +// JSON metadata for the struct +// [RulesetUpdateResponseRulesRulesetsBlockRuleActionParameters] +type rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type RulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains +// the JSON metadata for the struct +// [RulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponse] +type rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type RulesetUpdateResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetUpdateResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON +// metadata for the struct [RulesetUpdateResponseRulesRulesetsBlockRuleLogging] +type rulesetUpdateResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RulesetUpdateResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetUpdateResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RulesetUpdateResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetUpdateResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetUpdateResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for +// the struct [RulesetUpdateResponseRulesRulesetsExecuteRule] +type rulesetUpdateResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetUpdateResponseRulesRulesetsExecuteRule) implementsRulesetsRulesetUpdateResponseRule() { +} + +// The action to perform when the rule matches. +type RulesetUpdateResponseRulesRulesetsExecuteRuleAction string + +const ( + RulesetUpdateResponseRulesRulesetsExecuteRuleActionExecute RulesetUpdateResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r RulesetUpdateResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON contains the +// JSON metadata for the struct +// [RulesetUpdateResponseRulesRulesetsExecuteRuleActionParameters] +type rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON +// contains the JSON metadata for the struct +// [RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, RulesetUpdateResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RulesetUpdateResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetUpdateResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON +// metadata for the struct [RulesetUpdateResponseRulesRulesetsExecuteRuleLogging] +type rulesetUpdateResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RulesetUpdateResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetUpdateResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetUpdateResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetUpdateResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [RulesetUpdateResponseRulesRulesetsLogRule] +type rulesetUpdateResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetUpdateResponseRulesRulesetsLogRule) implementsRulesetsRulesetUpdateResponseRule() {} + +// The action to perform when the rule matches. +type RulesetUpdateResponseRulesRulesetsLogRuleAction string + +const ( + RulesetUpdateResponseRulesRulesetsLogRuleActionLog RulesetUpdateResponseRulesRulesetsLogRuleAction = "log" +) + +func (r RulesetUpdateResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RulesetUpdateResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetUpdateResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetUpdateResponseRulesRulesetsLogRuleLogging] +type rulesetUpdateResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type RulesetUpdateResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetUpdateResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RulesetUpdateResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetUpdateResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetUpdateResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for +// the struct [RulesetUpdateResponseRulesRulesetsSkipRule] +type rulesetUpdateResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetUpdateResponseRulesRulesetsSkipRule) implementsRulesetsRulesetUpdateResponseRule() {} + +// The action to perform when the rule matches. +type RulesetUpdateResponseRulesRulesetsSkipRuleAction string + +const ( + RulesetUpdateResponseRulesRulesetsSkipRuleActionSkip RulesetUpdateResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r RulesetUpdateResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RulesetUpdateResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON rulesetUpdateResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RulesetUpdateResponseRulesRulesetsSkipRuleActionParameters] +type rulesetUpdateResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductBic RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductHot RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductRateLimit RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductUABlock RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductWAF RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductBic, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductHot, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductUABlock, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductWAF, RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case RulesetUpdateResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type RulesetUpdateResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON rulesetUpdateResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// rulesetUpdateResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetUpdateResponseRulesRulesetsSkipRuleLogging] +type rulesetUpdateResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetUpdateResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetUpdateResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + +// A ruleset object. +type RulesetListResponse struct { + // The kind of the ruleset. + Kind RulesetListResponseKind `json:"kind,required"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase RulesetListResponsePhase `json:"phase,required"` + // The unique ID of the ruleset. + ID string `json:"id"` + // An informative description of the ruleset. + Description string `json:"description"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated" format:"date-time"` + // The version of the ruleset. + Version string `json:"version"` + JSON rulesetListResponseJSON `json:"-"` +} + +// rulesetListResponseJSON contains the JSON metadata for the struct +// [RulesetListResponse] +type rulesetListResponseJSON struct { + Kind apijson.Field + Name apijson.Field + Phase apijson.Field + ID apijson.Field + Description apijson.Field + LastUpdated apijson.Field + Version apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetListResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetListResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type RulesetListResponseKind string + +const ( + RulesetListResponseKindManaged RulesetListResponseKind = "managed" + RulesetListResponseKindCustom RulesetListResponseKind = "custom" + RulesetListResponseKindRoot RulesetListResponseKind = "root" + RulesetListResponseKindZone RulesetListResponseKind = "zone" +) + +func (r RulesetListResponseKind) IsKnown() bool { + switch r { + case RulesetListResponseKindManaged, RulesetListResponseKindCustom, RulesetListResponseKindRoot, RulesetListResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type RulesetListResponsePhase string + +const ( + RulesetListResponsePhaseDDoSL4 RulesetListResponsePhase = "ddos_l4" + RulesetListResponsePhaseDDoSL7 RulesetListResponsePhase = "ddos_l7" + RulesetListResponsePhaseHTTPConfigSettings RulesetListResponsePhase = "http_config_settings" + RulesetListResponsePhaseHTTPCustomErrors RulesetListResponsePhase = "http_custom_errors" + RulesetListResponsePhaseHTTPLogCustomFields RulesetListResponsePhase = "http_log_custom_fields" + RulesetListResponsePhaseHTTPRatelimit RulesetListResponsePhase = "http_ratelimit" + RulesetListResponsePhaseHTTPRequestCacheSettings RulesetListResponsePhase = "http_request_cache_settings" + RulesetListResponsePhaseHTTPRequestDynamicRedirect RulesetListResponsePhase = "http_request_dynamic_redirect" + RulesetListResponsePhaseHTTPRequestFirewallCustom RulesetListResponsePhase = "http_request_firewall_custom" + RulesetListResponsePhaseHTTPRequestFirewallManaged RulesetListResponsePhase = "http_request_firewall_managed" + RulesetListResponsePhaseHTTPRequestLateTransform RulesetListResponsePhase = "http_request_late_transform" + RulesetListResponsePhaseHTTPRequestOrigin RulesetListResponsePhase = "http_request_origin" + RulesetListResponsePhaseHTTPRequestRedirect RulesetListResponsePhase = "http_request_redirect" + RulesetListResponsePhaseHTTPRequestSanitize RulesetListResponsePhase = "http_request_sanitize" + RulesetListResponsePhaseHTTPRequestSbfm RulesetListResponsePhase = "http_request_sbfm" + RulesetListResponsePhaseHTTPRequestSelectConfiguration RulesetListResponsePhase = "http_request_select_configuration" + RulesetListResponsePhaseHTTPRequestTransform RulesetListResponsePhase = "http_request_transform" + RulesetListResponsePhaseHTTPResponseCompression RulesetListResponsePhase = "http_response_compression" + RulesetListResponsePhaseHTTPResponseFirewallManaged RulesetListResponsePhase = "http_response_firewall_managed" + RulesetListResponsePhaseHTTPResponseHeadersTransform RulesetListResponsePhase = "http_response_headers_transform" + RulesetListResponsePhaseMagicTransit RulesetListResponsePhase = "magic_transit" + RulesetListResponsePhaseMagicTransitIDsManaged RulesetListResponsePhase = "magic_transit_ids_managed" + RulesetListResponsePhaseMagicTransitManaged RulesetListResponsePhase = "magic_transit_managed" +) + +func (r RulesetListResponsePhase) IsKnown() bool { + switch r { + case RulesetListResponsePhaseDDoSL4, RulesetListResponsePhaseDDoSL7, RulesetListResponsePhaseHTTPConfigSettings, RulesetListResponsePhaseHTTPCustomErrors, RulesetListResponsePhaseHTTPLogCustomFields, RulesetListResponsePhaseHTTPRatelimit, RulesetListResponsePhaseHTTPRequestCacheSettings, RulesetListResponsePhaseHTTPRequestDynamicRedirect, RulesetListResponsePhaseHTTPRequestFirewallCustom, RulesetListResponsePhaseHTTPRequestFirewallManaged, RulesetListResponsePhaseHTTPRequestLateTransform, RulesetListResponsePhaseHTTPRequestOrigin, RulesetListResponsePhaseHTTPRequestRedirect, RulesetListResponsePhaseHTTPRequestSanitize, RulesetListResponsePhaseHTTPRequestSbfm, RulesetListResponsePhaseHTTPRequestSelectConfiguration, RulesetListResponsePhaseHTTPRequestTransform, RulesetListResponsePhaseHTTPResponseCompression, RulesetListResponsePhaseHTTPResponseFirewallManaged, RulesetListResponsePhaseHTTPResponseHeadersTransform, RulesetListResponsePhaseMagicTransit, RulesetListResponsePhaseMagicTransitIDsManaged, RulesetListResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// A ruleset object. +type RulesetGetResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind RulesetGetResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase RulesetGetResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []RulesetGetResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON rulesetGetResponseJSON `json:"-"` +} + +// rulesetGetResponseJSON contains the JSON metadata for the struct +// [RulesetGetResponse] +type rulesetGetResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetGetResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetGetResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type RulesetGetResponseKind string + +const ( + RulesetGetResponseKindManaged RulesetGetResponseKind = "managed" + RulesetGetResponseKindCustom RulesetGetResponseKind = "custom" + RulesetGetResponseKindRoot RulesetGetResponseKind = "root" + RulesetGetResponseKindZone RulesetGetResponseKind = "zone" +) + +func (r RulesetGetResponseKind) IsKnown() bool { + switch r { + case RulesetGetResponseKindManaged, RulesetGetResponseKindCustom, RulesetGetResponseKindRoot, RulesetGetResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type RulesetGetResponsePhase string + +const ( + RulesetGetResponsePhaseDDoSL4 RulesetGetResponsePhase = "ddos_l4" + RulesetGetResponsePhaseDDoSL7 RulesetGetResponsePhase = "ddos_l7" + RulesetGetResponsePhaseHTTPConfigSettings RulesetGetResponsePhase = "http_config_settings" + RulesetGetResponsePhaseHTTPCustomErrors RulesetGetResponsePhase = "http_custom_errors" + RulesetGetResponsePhaseHTTPLogCustomFields RulesetGetResponsePhase = "http_log_custom_fields" + RulesetGetResponsePhaseHTTPRatelimit RulesetGetResponsePhase = "http_ratelimit" + RulesetGetResponsePhaseHTTPRequestCacheSettings RulesetGetResponsePhase = "http_request_cache_settings" + RulesetGetResponsePhaseHTTPRequestDynamicRedirect RulesetGetResponsePhase = "http_request_dynamic_redirect" + RulesetGetResponsePhaseHTTPRequestFirewallCustom RulesetGetResponsePhase = "http_request_firewall_custom" + RulesetGetResponsePhaseHTTPRequestFirewallManaged RulesetGetResponsePhase = "http_request_firewall_managed" + RulesetGetResponsePhaseHTTPRequestLateTransform RulesetGetResponsePhase = "http_request_late_transform" + RulesetGetResponsePhaseHTTPRequestOrigin RulesetGetResponsePhase = "http_request_origin" + RulesetGetResponsePhaseHTTPRequestRedirect RulesetGetResponsePhase = "http_request_redirect" + RulesetGetResponsePhaseHTTPRequestSanitize RulesetGetResponsePhase = "http_request_sanitize" + RulesetGetResponsePhaseHTTPRequestSbfm RulesetGetResponsePhase = "http_request_sbfm" + RulesetGetResponsePhaseHTTPRequestSelectConfiguration RulesetGetResponsePhase = "http_request_select_configuration" + RulesetGetResponsePhaseHTTPRequestTransform RulesetGetResponsePhase = "http_request_transform" + RulesetGetResponsePhaseHTTPResponseCompression RulesetGetResponsePhase = "http_response_compression" + RulesetGetResponsePhaseHTTPResponseFirewallManaged RulesetGetResponsePhase = "http_response_firewall_managed" + RulesetGetResponsePhaseHTTPResponseHeadersTransform RulesetGetResponsePhase = "http_response_headers_transform" + RulesetGetResponsePhaseMagicTransit RulesetGetResponsePhase = "magic_transit" + RulesetGetResponsePhaseMagicTransitIDsManaged RulesetGetResponsePhase = "magic_transit_ids_managed" + RulesetGetResponsePhaseMagicTransitManaged RulesetGetResponsePhase = "magic_transit_managed" +) + +func (r RulesetGetResponsePhase) IsKnown() bool { + switch r { + case RulesetGetResponsePhaseDDoSL4, RulesetGetResponsePhaseDDoSL7, RulesetGetResponsePhaseHTTPConfigSettings, RulesetGetResponsePhaseHTTPCustomErrors, RulesetGetResponsePhaseHTTPLogCustomFields, RulesetGetResponsePhaseHTTPRatelimit, RulesetGetResponsePhaseHTTPRequestCacheSettings, RulesetGetResponsePhaseHTTPRequestDynamicRedirect, RulesetGetResponsePhaseHTTPRequestFirewallCustom, RulesetGetResponsePhaseHTTPRequestFirewallManaged, RulesetGetResponsePhaseHTTPRequestLateTransform, RulesetGetResponsePhaseHTTPRequestOrigin, RulesetGetResponsePhaseHTTPRequestRedirect, RulesetGetResponsePhaseHTTPRequestSanitize, RulesetGetResponsePhaseHTTPRequestSbfm, RulesetGetResponsePhaseHTTPRequestSelectConfiguration, RulesetGetResponsePhaseHTTPRequestTransform, RulesetGetResponsePhaseHTTPResponseCompression, RulesetGetResponsePhaseHTTPResponseFirewallManaged, RulesetGetResponsePhaseHTTPResponseHeadersTransform, RulesetGetResponsePhaseMagicTransit, RulesetGetResponsePhaseMagicTransitIDsManaged, RulesetGetResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.RulesetGetResponseRulesRulesetsBlockRule], +// [rulesets.RulesetGetResponseRulesRulesetsExecuteRule], +// [rulesets.RulesetGetResponseRulesRulesetsLogRule] or +// [rulesets.RulesetGetResponseRulesRulesetsSkipRule]. +type RulesetGetResponseRule interface { + implementsRulesetsRulesetGetResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*RulesetGetResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetGetResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetGetResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetGetResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(RulesetGetResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type RulesetGetResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action RulesetGetResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters RulesetGetResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging RulesetGetResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON rulesetGetResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// rulesetGetResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [RulesetGetResponseRulesRulesetsBlockRule] +type rulesetGetResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *RulesetGetResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r rulesetGetResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r RulesetGetResponseRulesRulesetsBlockRule) implementsRulesetsRulesetGetResponseRule() {} + +// The action to perform when the rule matches. +type RulesetGetResponseRulesRulesetsBlockRuleAction string + +const ( + RulesetGetResponseRulesRulesetsBlockRuleActionBlock RulesetGetResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r RulesetGetResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case RulesetGetResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type RulesetGetResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response RulesetGetResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON rulesetGetResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// rulesetGetResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RulesetGetResponseRulesRulesetsBlockRuleActionParameters] +type rulesetGetResponseRulesRulesetsBlockRuleActionParametersJSON struct { Response apijson.Field raw string ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { return r.raw } // The response to show when the block is applied. -type RulesetRulesRulesetsBlockRuleActionParametersResponse struct { +type RulesetGetResponseRulesRulesetsBlockRuleActionParametersResponse struct { // The content to return. Content string `json:"content,required"` // The type of the content to return. ContentType string `json:"content_type,required"` // The status code to return. - StatusCode int64 `json:"status_code,required"` - JSON rulesetRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` + StatusCode int64 `json:"status_code,required"` + JSON rulesetGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` } -// rulesetRulesRulesetsBlockRuleActionParametersResponseJSON contains the JSON -// metadata for the struct [RulesetRulesRulesetsBlockRuleActionParametersResponse] -type rulesetRulesRulesetsBlockRuleActionParametersResponseJSON struct { +// rulesetGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains +// the JSON metadata for the struct +// [RulesetGetResponseRulesRulesetsBlockRuleActionParametersResponse] +type rulesetGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { Content apijson.Field ContentType apijson.Field StatusCode apijson.Field @@ -402,38 +2278,38 @@ type rulesetRulesRulesetsBlockRuleActionParametersResponseJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { return r.raw } // An object configuring the rule's logging behavior. -type RulesetRulesRulesetsBlockRuleLogging struct { +type RulesetGetResponseRulesRulesetsBlockRuleLogging struct { // Whether to generate a log when the rule matches. - Enabled bool `json:"enabled,required"` - JSON rulesetRulesRulesetsBlockRuleLoggingJSON `json:"-"` + Enabled bool `json:"enabled,required"` + JSON rulesetGetResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` } -// rulesetRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata for the -// struct [RulesetRulesRulesetsBlockRuleLogging] -type rulesetRulesRulesetsBlockRuleLoggingJSON struct { +// rulesetGetResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetGetResponseRulesRulesetsBlockRuleLogging] +type rulesetGetResponseRulesRulesetsBlockRuleLoggingJSON struct { Enabled apijson.Field raw string ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { return r.raw } -type RulesetRulesRulesetsExecuteRule struct { +type RulesetGetResponseRulesRulesetsExecuteRule struct { // The timestamp of when the rule was last modified. LastUpdated time.Time `json:"last_updated,required" format:"date-time"` // The version of the rule. @@ -441,9 +2317,9 @@ type RulesetRulesRulesetsExecuteRule struct { // The unique ID of the rule. ID string `json:"id"` // The action to perform when the rule matches. - Action RulesetRulesRulesetsExecuteRuleAction `json:"action"` + Action RulesetGetResponseRulesRulesetsExecuteRuleAction `json:"action"` // The parameters configuring the rule's action. - ActionParameters RulesetRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + ActionParameters RulesetGetResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` // The categories of the rule. Categories []string `json:"categories"` // An informative description of the rule. @@ -453,15 +2329,15 @@ type RulesetRulesRulesetsExecuteRule struct { // The expression defining which traffic will match the rule. Expression string `json:"expression"` // An object configuring the rule's logging behavior. - Logging RulesetRulesRulesetsExecuteRuleLogging `json:"logging"` + Logging RulesetGetResponseRulesRulesetsExecuteRuleLogging `json:"logging"` // The reference of the rule (the rule ID by default). - Ref string `json:"ref"` - JSON rulesetRulesRulesetsExecuteRuleJSON `json:"-"` + Ref string `json:"ref"` + JSON rulesetGetResponseRulesRulesetsExecuteRuleJSON `json:"-"` } -// rulesetRulesRulesetsExecuteRuleJSON contains the JSON metadata for the struct -// [RulesetRulesRulesetsExecuteRule] -type rulesetRulesRulesetsExecuteRuleJSON struct { +// rulesetGetResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for +// the struct [RulesetGetResponseRulesRulesetsExecuteRule] +type rulesetGetResponseRulesRulesetsExecuteRuleJSON struct { LastUpdated apijson.Field Version apijson.Field ID apijson.Field @@ -477,45 +2353,46 @@ type rulesetRulesRulesetsExecuteRuleJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsExecuteRuleJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { return r.raw } -func (r RulesetRulesRulesetsExecuteRule) implementsRulesetsRulesetRule() {} +func (r RulesetGetResponseRulesRulesetsExecuteRule) implementsRulesetsRulesetGetResponseRule() {} // The action to perform when the rule matches. -type RulesetRulesRulesetsExecuteRuleAction string +type RulesetGetResponseRulesRulesetsExecuteRuleAction string const ( - RulesetRulesRulesetsExecuteRuleActionExecute RulesetRulesRulesetsExecuteRuleAction = "execute" + RulesetGetResponseRulesRulesetsExecuteRuleActionExecute RulesetGetResponseRulesRulesetsExecuteRuleAction = "execute" ) -func (r RulesetRulesRulesetsExecuteRuleAction) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { switch r { - case RulesetRulesRulesetsExecuteRuleActionExecute: + case RulesetGetResponseRulesRulesetsExecuteRuleActionExecute: return true } return false } // The parameters configuring the rule's action. -type RulesetRulesRulesetsExecuteRuleActionParameters struct { +type RulesetGetResponseRulesRulesetsExecuteRuleActionParameters struct { // The ID of the ruleset to execute. ID string `json:"id,required"` // The configuration to use for matched data logging. - MatchedData RulesetRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + MatchedData RulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` // A set of overrides to apply to the target ruleset. - Overrides RulesetRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` - JSON rulesetRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` + Overrides RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON rulesetGetResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` } -// rulesetRulesRulesetsExecuteRuleActionParametersJSON contains the JSON metadata -// for the struct [RulesetRulesRulesetsExecuteRuleActionParameters] -type rulesetRulesRulesetsExecuteRuleActionParametersJSON struct { +// rulesetGetResponseRulesRulesetsExecuteRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RulesetGetResponseRulesRulesetsExecuteRuleActionParameters] +type rulesetGetResponseRulesRulesetsExecuteRuleActionParametersJSON struct { ID apijson.Field MatchedData apijson.Field Overrides apijson.Field @@ -523,61 +2400,61 @@ type rulesetRulesRulesetsExecuteRuleActionParametersJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { return r.raw } // The configuration to use for matched data logging. -type RulesetRulesRulesetsExecuteRuleActionParametersMatchedData struct { +type RulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { // The public key to encrypt matched data logs with. - PublicKey string `json:"public_key,required"` - JSON rulesetRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` + PublicKey string `json:"public_key,required"` + JSON rulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` } -// rulesetRulesRulesetsExecuteRuleActionParametersMatchedDataJSON contains the JSON -// metadata for the struct -// [RulesetRulesRulesetsExecuteRuleActionParametersMatchedData] -type rulesetRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { +// rulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [RulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type rulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { PublicKey apijson.Field raw string ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { return r.raw } // A set of overrides to apply to the target ruleset. -type RulesetRulesRulesetsExecuteRuleActionParametersOverrides struct { +type RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { // An action to override all rules with. This option has lower precedence than rule // and category overrides. Action string `json:"action"` // A list of category-level overrides. This option has the second-highest // precedence after rule-level overrides. - Categories []RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + Categories []RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` // Whether to enable execution of all rules. This option has lower precedence than // rule and category overrides. Enabled bool `json:"enabled"` // A list of rule-level overrides. This option has the highest precedence. - Rules []RulesetRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + Rules []RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` // A sensitivity level to set for all rules. This option has lower precedence than // rule and category overrides and is only applicable for DDoS phases. - SensitivityLevel RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` - JSON rulesetRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` + SensitivityLevel RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` } -// rulesetRulesRulesetsExecuteRuleActionParametersOverridesJSON contains the JSON -// metadata for the struct -// [RulesetRulesRulesetsExecuteRuleActionParametersOverrides] -type rulesetRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { +// rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON contains +// the JSON metadata for the struct +// [RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { Action apijson.Field Categories apijson.Field Enabled apijson.Field @@ -587,16 +2464,16 @@ type rulesetRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { return r.raw } // A category-level override -type RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { +type RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { // The name of the category to override. Category string `json:"category,required"` // The action to override rules in the category with. @@ -604,14 +2481,14 @@ type RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { // Whether to enable execution of rules in the category. Enabled bool `json:"enabled"` // The sensitivity level to use for rules in the category. - SensitivityLevel RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` - JSON rulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` + SensitivityLevel RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` } -// rulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON contains -// the JSON metadata for the struct -// [RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategory] -type rulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { +// rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { Category apijson.Field Action apijson.Field Enabled apijson.Field @@ -620,34 +2497,34 @@ type rulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { return r.raw } // The sensitivity level to use for rules in the category. -type RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string +type RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string const ( - RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" ) -func (r RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { switch r { - case RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, RulesetRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + case RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: return true } return false } // A rule-level override -type RulesetRulesRulesetsExecuteRuleActionParametersOverridesRule struct { +type RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { // The ID of the rule to override. ID string `json:"id,required"` // The action to override the rule with. @@ -657,14 +2534,14 @@ type RulesetRulesRulesetsExecuteRuleActionParametersOverridesRule struct { // The score threshold to use for the rule. ScoreThreshold int64 `json:"score_threshold"` // The sensitivity level to use for the rule. - SensitivityLevel RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` - JSON rulesetRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` + SensitivityLevel RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` } -// rulesetRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON contains the -// JSON metadata for the struct -// [RulesetRulesRulesetsExecuteRuleActionParametersOverridesRule] -type rulesetRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { +// rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { ID apijson.Field Action apijson.Field Enabled apijson.Field @@ -674,27 +2551,27 @@ type rulesetRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { return r.raw } // The sensitivity level to use for the rule. -type RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string +type RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string const ( - RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" ) -func (r RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { switch r { - case RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + case RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: return true } return false @@ -702,47 +2579,47 @@ func (r RulesetRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivity // A sensitivity level to set for all rules. This option has lower precedence than // rule and category overrides and is only applicable for DDoS phases. -type RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string +type RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string const ( - RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" - RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" ) -func (r RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { switch r { - case RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, RulesetRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + case RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, RulesetGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: return true } return false } // An object configuring the rule's logging behavior. -type RulesetRulesRulesetsExecuteRuleLogging struct { +type RulesetGetResponseRulesRulesetsExecuteRuleLogging struct { // Whether to generate a log when the rule matches. - Enabled bool `json:"enabled,required"` - JSON rulesetRulesRulesetsExecuteRuleLoggingJSON `json:"-"` + Enabled bool `json:"enabled,required"` + JSON rulesetGetResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` } -// rulesetRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata for the -// struct [RulesetRulesRulesetsExecuteRuleLogging] -type rulesetRulesRulesetsExecuteRuleLoggingJSON struct { +// rulesetGetResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetGetResponseRulesRulesetsExecuteRuleLogging] +type rulesetGetResponseRulesRulesetsExecuteRuleLoggingJSON struct { Enabled apijson.Field raw string ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { return r.raw } -type RulesetRulesRulesetsLogRule struct { +type RulesetGetResponseRulesRulesetsLogRule struct { // The timestamp of when the rule was last modified. LastUpdated time.Time `json:"last_updated,required" format:"date-time"` // The version of the rule. @@ -750,7 +2627,7 @@ type RulesetRulesRulesetsLogRule struct { // The unique ID of the rule. ID string `json:"id"` // The action to perform when the rule matches. - Action RulesetRulesRulesetsLogRuleAction `json:"action"` + Action RulesetGetResponseRulesRulesetsLogRuleAction `json:"action"` // The parameters configuring the rule's action. ActionParameters interface{} `json:"action_parameters"` // The categories of the rule. @@ -762,15 +2639,15 @@ type RulesetRulesRulesetsLogRule struct { // The expression defining which traffic will match the rule. Expression string `json:"expression"` // An object configuring the rule's logging behavior. - Logging RulesetRulesRulesetsLogRuleLogging `json:"logging"` + Logging RulesetGetResponseRulesRulesetsLogRuleLogging `json:"logging"` // The reference of the rule (the rule ID by default). - Ref string `json:"ref"` - JSON rulesetRulesRulesetsLogRuleJSON `json:"-"` + Ref string `json:"ref"` + JSON rulesetGetResponseRulesRulesetsLogRuleJSON `json:"-"` } -// rulesetRulesRulesetsLogRuleJSON contains the JSON metadata for the struct -// [RulesetRulesRulesetsLogRule] -type rulesetRulesRulesetsLogRuleJSON struct { +// rulesetGetResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [RulesetGetResponseRulesRulesetsLogRule] +type rulesetGetResponseRulesRulesetsLogRuleJSON struct { LastUpdated apijson.Field Version apijson.Field ID apijson.Field @@ -786,55 +2663,55 @@ type rulesetRulesRulesetsLogRuleJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsLogRuleJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsLogRuleJSON) RawJSON() string { return r.raw } -func (r RulesetRulesRulesetsLogRule) implementsRulesetsRulesetRule() {} +func (r RulesetGetResponseRulesRulesetsLogRule) implementsRulesetsRulesetGetResponseRule() {} // The action to perform when the rule matches. -type RulesetRulesRulesetsLogRuleAction string +type RulesetGetResponseRulesRulesetsLogRuleAction string const ( - RulesetRulesRulesetsLogRuleActionLog RulesetRulesRulesetsLogRuleAction = "log" + RulesetGetResponseRulesRulesetsLogRuleActionLog RulesetGetResponseRulesRulesetsLogRuleAction = "log" ) -func (r RulesetRulesRulesetsLogRuleAction) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsLogRuleAction) IsKnown() bool { switch r { - case RulesetRulesRulesetsLogRuleActionLog: + case RulesetGetResponseRulesRulesetsLogRuleActionLog: return true } return false } // An object configuring the rule's logging behavior. -type RulesetRulesRulesetsLogRuleLogging struct { +type RulesetGetResponseRulesRulesetsLogRuleLogging struct { // Whether to generate a log when the rule matches. - Enabled bool `json:"enabled,required"` - JSON rulesetRulesRulesetsLogRuleLoggingJSON `json:"-"` + Enabled bool `json:"enabled,required"` + JSON rulesetGetResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` } -// rulesetRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for the struct -// [RulesetRulesRulesetsLogRuleLogging] -type rulesetRulesRulesetsLogRuleLoggingJSON struct { +// rulesetGetResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for +// the struct [RulesetGetResponseRulesRulesetsLogRuleLogging] +type rulesetGetResponseRulesRulesetsLogRuleLoggingJSON struct { Enabled apijson.Field raw string ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsLogRuleLoggingJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { return r.raw } -type RulesetRulesRulesetsSkipRule struct { +type RulesetGetResponseRulesRulesetsSkipRule struct { // The timestamp of when the rule was last modified. LastUpdated time.Time `json:"last_updated,required" format:"date-time"` // The version of the rule. @@ -842,9 +2719,9 @@ type RulesetRulesRulesetsSkipRule struct { // The unique ID of the rule. ID string `json:"id"` // The action to perform when the rule matches. - Action RulesetRulesRulesetsSkipRuleAction `json:"action"` + Action RulesetGetResponseRulesRulesetsSkipRuleAction `json:"action"` // The parameters configuring the rule's action. - ActionParameters RulesetRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + ActionParameters RulesetGetResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` // The categories of the rule. Categories []string `json:"categories"` // An informative description of the rule. @@ -854,15 +2731,15 @@ type RulesetRulesRulesetsSkipRule struct { // The expression defining which traffic will match the rule. Expression string `json:"expression"` // An object configuring the rule's logging behavior. - Logging RulesetRulesRulesetsSkipRuleLogging `json:"logging"` + Logging RulesetGetResponseRulesRulesetsSkipRuleLogging `json:"logging"` // The reference of the rule (the rule ID by default). - Ref string `json:"ref"` - JSON rulesetRulesRulesetsSkipRuleJSON `json:"-"` + Ref string `json:"ref"` + JSON rulesetGetResponseRulesRulesetsSkipRuleJSON `json:"-"` } -// rulesetRulesRulesetsSkipRuleJSON contains the JSON metadata for the struct -// [RulesetRulesRulesetsSkipRule] -type rulesetRulesRulesetsSkipRuleJSON struct { +// rulesetGetResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [RulesetGetResponseRulesRulesetsSkipRule] +type rulesetGetResponseRulesRulesetsSkipRuleJSON struct { LastUpdated apijson.Field Version apijson.Field ID apijson.Field @@ -878,53 +2755,54 @@ type rulesetRulesRulesetsSkipRuleJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsSkipRuleJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsSkipRuleJSON) RawJSON() string { return r.raw } -func (r RulesetRulesRulesetsSkipRule) implementsRulesetsRulesetRule() {} +func (r RulesetGetResponseRulesRulesetsSkipRule) implementsRulesetsRulesetGetResponseRule() {} // The action to perform when the rule matches. -type RulesetRulesRulesetsSkipRuleAction string +type RulesetGetResponseRulesRulesetsSkipRuleAction string const ( - RulesetRulesRulesetsSkipRuleActionSkip RulesetRulesRulesetsSkipRuleAction = "skip" + RulesetGetResponseRulesRulesetsSkipRuleActionSkip RulesetGetResponseRulesRulesetsSkipRuleAction = "skip" ) -func (r RulesetRulesRulesetsSkipRuleAction) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsSkipRuleAction) IsKnown() bool { switch r { - case RulesetRulesRulesetsSkipRuleActionSkip: + case RulesetGetResponseRulesRulesetsSkipRuleActionSkip: return true } return false } // The parameters configuring the rule's action. -type RulesetRulesRulesetsSkipRuleActionParameters struct { +type RulesetGetResponseRulesRulesetsSkipRuleActionParameters struct { // A list of phases to skip the execution of. This option is incompatible with the // ruleset and rulesets options. - Phases []RulesetRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + Phases []RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` // A list of legacy security products to skip the execution of. - Products []RulesetRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + Products []RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the // execution of. This option is incompatible with the ruleset option. Rules map[string][]string `json:"rules"` // A ruleset to skip the execution of. This option is incompatible with the // rulesets, rules and phases options. - Ruleset RulesetRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + Ruleset RulesetGetResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` // A list of ruleset IDs to skip the execution of. This option is incompatible with // the ruleset and phases options. - Rulesets []string `json:"rulesets"` - JSON rulesetRulesRulesetsSkipRuleActionParametersJSON `json:"-"` + Rulesets []string `json:"rulesets"` + JSON rulesetGetResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` } -// rulesetRulesRulesetsSkipRuleActionParametersJSON contains the JSON metadata for -// the struct [RulesetRulesRulesetsSkipRuleActionParameters] -type rulesetRulesRulesetsSkipRuleActionParametersJSON struct { +// rulesetGetResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct +// [RulesetGetResponseRulesRulesetsSkipRuleActionParameters] +type rulesetGetResponseRulesRulesetsSkipRuleActionParametersJSON struct { Phases apijson.Field Products apijson.Field Rules apijson.Field @@ -934,67 +2812,67 @@ type rulesetRulesRulesetsSkipRuleActionParametersJSON struct { ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { return r.raw } // A phase to skip the execution of. -type RulesetRulesRulesetsSkipRuleActionParametersPhase string +type RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase string const ( - RulesetRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 RulesetRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" - RulesetRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 RulesetRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" - RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform RulesetRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" - RulesetRulesRulesetsSkipRuleActionParametersPhaseMagicTransit RulesetRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" - RulesetRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged RulesetRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" - RulesetRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged RulesetRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" ) -func (r RulesetRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { switch r { - case RulesetRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, RulesetRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, RulesetRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, RulesetRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, RulesetRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, RulesetRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + case RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, RulesetGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: return true } return false } // The name of a legacy security product to skip the execution of. -type RulesetRulesRulesetsSkipRuleActionParametersProduct string +type RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct string const ( - RulesetRulesRulesetsSkipRuleActionParametersProductBic RulesetRulesRulesetsSkipRuleActionParametersProduct = "bic" - RulesetRulesRulesetsSkipRuleActionParametersProductHot RulesetRulesRulesetsSkipRuleActionParametersProduct = "hot" - RulesetRulesRulesetsSkipRuleActionParametersProductRateLimit RulesetRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" - RulesetRulesRulesetsSkipRuleActionParametersProductSecurityLevel RulesetRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" - RulesetRulesRulesetsSkipRuleActionParametersProductUABlock RulesetRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" - RulesetRulesRulesetsSkipRuleActionParametersProductWAF RulesetRulesRulesetsSkipRuleActionParametersProduct = "waf" - RulesetRulesRulesetsSkipRuleActionParametersProductZoneLockdown RulesetRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductBic RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductHot RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductWAF RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" ) -func (r RulesetRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { switch r { - case RulesetRulesRulesetsSkipRuleActionParametersProductBic, RulesetRulesRulesetsSkipRuleActionParametersProductHot, RulesetRulesRulesetsSkipRuleActionParametersProductRateLimit, RulesetRulesRulesetsSkipRuleActionParametersProductSecurityLevel, RulesetRulesRulesetsSkipRuleActionParametersProductUABlock, RulesetRulesRulesetsSkipRuleActionParametersProductWAF, RulesetRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + case RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductBic, RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductHot, RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock, RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductWAF, RulesetGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: return true } return false @@ -1002,139 +2880,43 @@ func (r RulesetRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { // A ruleset to skip the execution of. This option is incompatible with the // rulesets, rules and phases options. -type RulesetRulesRulesetsSkipRuleActionParametersRuleset string +type RulesetGetResponseRulesRulesetsSkipRuleActionParametersRuleset string const ( - RulesetRulesRulesetsSkipRuleActionParametersRulesetCurrent RulesetRulesRulesetsSkipRuleActionParametersRuleset = "current" + RulesetGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent RulesetGetResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" ) -func (r RulesetRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { +func (r RulesetGetResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { switch r { - case RulesetRulesRulesetsSkipRuleActionParametersRulesetCurrent: + case RulesetGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: return true } return false } // An object configuring the rule's logging behavior. -type RulesetRulesRulesetsSkipRuleLogging struct { +type RulesetGetResponseRulesRulesetsSkipRuleLogging struct { // Whether to generate a log when the rule matches. - Enabled bool `json:"enabled,required"` - JSON rulesetRulesRulesetsSkipRuleLoggingJSON `json:"-"` + Enabled bool `json:"enabled,required"` + JSON rulesetGetResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` } -// rulesetRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata for the -// struct [RulesetRulesRulesetsSkipRuleLogging] -type rulesetRulesRulesetsSkipRuleLoggingJSON struct { +// rulesetGetResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata +// for the struct [RulesetGetResponseRulesRulesetsSkipRuleLogging] +type rulesetGetResponseRulesRulesetsSkipRuleLoggingJSON struct { Enabled apijson.Field raw string ExtraFields map[string]apijson.Field } -func (r *RulesetRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { - return apijson.UnmarshalRoot(data, r) -} - -func (r rulesetRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { - return r.raw -} - -// A ruleset object. -type RulesetListResponse struct { - // The kind of the ruleset. - Kind RulesetListResponseKind `json:"kind,required"` - // The human-readable name of the ruleset. - Name string `json:"name,required"` - // The phase of the ruleset. - Phase RulesetListResponsePhase `json:"phase,required"` - // The unique ID of the ruleset. - ID string `json:"id"` - // An informative description of the ruleset. - Description string `json:"description"` - // The timestamp of when the ruleset was last modified. - LastUpdated time.Time `json:"last_updated" format:"date-time"` - // The version of the ruleset. - Version string `json:"version"` - JSON rulesetListResponseJSON `json:"-"` -} - -// rulesetListResponseJSON contains the JSON metadata for the struct -// [RulesetListResponse] -type rulesetListResponseJSON struct { - Kind apijson.Field - Name apijson.Field - Phase apijson.Field - ID apijson.Field - Description apijson.Field - LastUpdated apijson.Field - Version apijson.Field - raw string - ExtraFields map[string]apijson.Field -} - -func (r *RulesetListResponse) UnmarshalJSON(data []byte) (err error) { +func (r *RulesetGetResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { return apijson.UnmarshalRoot(data, r) } -func (r rulesetListResponseJSON) RawJSON() string { +func (r rulesetGetResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { return r.raw } -// The kind of the ruleset. -type RulesetListResponseKind string - -const ( - RulesetListResponseKindManaged RulesetListResponseKind = "managed" - RulesetListResponseKindCustom RulesetListResponseKind = "custom" - RulesetListResponseKindRoot RulesetListResponseKind = "root" - RulesetListResponseKindZone RulesetListResponseKind = "zone" -) - -func (r RulesetListResponseKind) IsKnown() bool { - switch r { - case RulesetListResponseKindManaged, RulesetListResponseKindCustom, RulesetListResponseKindRoot, RulesetListResponseKindZone: - return true - } - return false -} - -// The phase of the ruleset. -type RulesetListResponsePhase string - -const ( - RulesetListResponsePhaseDDoSL4 RulesetListResponsePhase = "ddos_l4" - RulesetListResponsePhaseDDoSL7 RulesetListResponsePhase = "ddos_l7" - RulesetListResponsePhaseHTTPConfigSettings RulesetListResponsePhase = "http_config_settings" - RulesetListResponsePhaseHTTPCustomErrors RulesetListResponsePhase = "http_custom_errors" - RulesetListResponsePhaseHTTPLogCustomFields RulesetListResponsePhase = "http_log_custom_fields" - RulesetListResponsePhaseHTTPRatelimit RulesetListResponsePhase = "http_ratelimit" - RulesetListResponsePhaseHTTPRequestCacheSettings RulesetListResponsePhase = "http_request_cache_settings" - RulesetListResponsePhaseHTTPRequestDynamicRedirect RulesetListResponsePhase = "http_request_dynamic_redirect" - RulesetListResponsePhaseHTTPRequestFirewallCustom RulesetListResponsePhase = "http_request_firewall_custom" - RulesetListResponsePhaseHTTPRequestFirewallManaged RulesetListResponsePhase = "http_request_firewall_managed" - RulesetListResponsePhaseHTTPRequestLateTransform RulesetListResponsePhase = "http_request_late_transform" - RulesetListResponsePhaseHTTPRequestOrigin RulesetListResponsePhase = "http_request_origin" - RulesetListResponsePhaseHTTPRequestRedirect RulesetListResponsePhase = "http_request_redirect" - RulesetListResponsePhaseHTTPRequestSanitize RulesetListResponsePhase = "http_request_sanitize" - RulesetListResponsePhaseHTTPRequestSbfm RulesetListResponsePhase = "http_request_sbfm" - RulesetListResponsePhaseHTTPRequestSelectConfiguration RulesetListResponsePhase = "http_request_select_configuration" - RulesetListResponsePhaseHTTPRequestTransform RulesetListResponsePhase = "http_request_transform" - RulesetListResponsePhaseHTTPResponseCompression RulesetListResponsePhase = "http_response_compression" - RulesetListResponsePhaseHTTPResponseFirewallManaged RulesetListResponsePhase = "http_response_firewall_managed" - RulesetListResponsePhaseHTTPResponseHeadersTransform RulesetListResponsePhase = "http_response_headers_transform" - RulesetListResponsePhaseMagicTransit RulesetListResponsePhase = "magic_transit" - RulesetListResponsePhaseMagicTransitIDsManaged RulesetListResponsePhase = "magic_transit_ids_managed" - RulesetListResponsePhaseMagicTransitManaged RulesetListResponsePhase = "magic_transit_managed" -) - -func (r RulesetListResponsePhase) IsKnown() bool { - switch r { - case RulesetListResponsePhaseDDoSL4, RulesetListResponsePhaseDDoSL7, RulesetListResponsePhaseHTTPConfigSettings, RulesetListResponsePhaseHTTPCustomErrors, RulesetListResponsePhaseHTTPLogCustomFields, RulesetListResponsePhaseHTTPRatelimit, RulesetListResponsePhaseHTTPRequestCacheSettings, RulesetListResponsePhaseHTTPRequestDynamicRedirect, RulesetListResponsePhaseHTTPRequestFirewallCustom, RulesetListResponsePhaseHTTPRequestFirewallManaged, RulesetListResponsePhaseHTTPRequestLateTransform, RulesetListResponsePhaseHTTPRequestOrigin, RulesetListResponsePhaseHTTPRequestRedirect, RulesetListResponsePhaseHTTPRequestSanitize, RulesetListResponsePhaseHTTPRequestSbfm, RulesetListResponsePhaseHTTPRequestSelectConfiguration, RulesetListResponsePhaseHTTPRequestTransform, RulesetListResponsePhaseHTTPResponseCompression, RulesetListResponsePhaseHTTPResponseFirewallManaged, RulesetListResponsePhaseHTTPResponseHeadersTransform, RulesetListResponsePhaseMagicTransit, RulesetListResponsePhaseMagicTransitIDsManaged, RulesetListResponsePhaseMagicTransitManaged: - return true - } - return false -} - type RulesetNewParams struct { // The kind of the ruleset. Kind param.Field[RulesetNewParamsKind] `json:"kind,required"` @@ -1680,8 +3462,8 @@ type RulesetNewResponseEnvelope struct { Errors []RulesetNewResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []RulesetNewResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result RulesetNewResponse `json:"result,required"` // Whether the API call was successful. Success RulesetNewResponseEnvelopeSuccess `json:"success,required"` JSON rulesetNewResponseEnvelopeJSON `json:"-"` @@ -1826,8 +3608,6 @@ func (r RulesetNewResponseEnvelopeSuccess) IsKnown() bool { } type RulesetUpdateParams struct { - // The unique ID of the ruleset. - ID param.Field[string] `json:"id,required"` // The list of rules in the ruleset. Rules param.Field[[]RulesetUpdateParamsRule] `json:"rules,required"` // The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. @@ -2372,8 +4152,8 @@ type RulesetUpdateResponseEnvelope struct { Errors []RulesetUpdateResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []RulesetUpdateResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result RulesetUpdateResponse `json:"result,required"` // Whether the API call was successful. Success RulesetUpdateResponseEnvelopeSuccess `json:"success,required"` JSON rulesetUpdateResponseEnvelopeJSON `json:"-"` @@ -2544,8 +4324,8 @@ type RulesetGetResponseEnvelope struct { Errors []RulesetGetResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []RulesetGetResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result RulesetGetResponse `json:"result,required"` // Whether the API call was successful. Success RulesetGetResponseEnvelopeSuccess `json:"success,required"` JSON rulesetGetResponseEnvelopeJSON `json:"-"` diff --git a/rulesets/ruleset_test.go b/rulesets/ruleset_test.go index 9e8e0140b0..eb09b2000f 100644 --- a/rulesets/ruleset_test.go +++ b/rulesets/ruleset_test.go @@ -115,7 +115,6 @@ func TestRulesetUpdateWithOptionalParams(t *testing.T) { context.TODO(), "2f2feab2026849078ba485f918791bdc", rulesets.RulesetUpdateParams{ - ID: cloudflare.F("2f2feab2026849078ba485f918791bdc"), Rules: cloudflare.F([]rulesets.RulesetUpdateParamsRule{rulesets.RulesetUpdateParamsRulesRulesetsBlockRule(rulesets.RulesetUpdateParamsRulesRulesetsBlockRule{ Action: cloudflare.F(rulesets.RulesetUpdateParamsRulesRulesetsBlockRuleActionBlock), ActionParameters: cloudflare.F(rulesets.RulesetUpdateParamsRulesRulesetsBlockRuleActionParameters{ diff --git a/rulesets/version.go b/rulesets/version.go index 614bf80df8..c0ec747e6d 100644 --- a/rulesets/version.go +++ b/rulesets/version.go @@ -6,6 +6,7 @@ import ( "context" "fmt" "net/http" + "reflect" "time" "github.com/cloudflare/cloudflare-go/v2/internal/apijson" @@ -13,6 +14,7 @@ import ( "github.com/cloudflare/cloudflare-go/v2/internal/param" "github.com/cloudflare/cloudflare-go/v2/internal/requestconfig" "github.com/cloudflare/cloudflare-go/v2/option" + "github.com/tidwall/gjson" ) // VersionService contains methods and other services that help with interacting @@ -85,7 +87,7 @@ func (r *VersionService) Delete(ctx context.Context, rulesetID string, rulesetVe } // Fetches a specific version of an account or zone ruleset. -func (r *VersionService) Get(ctx context.Context, rulesetID string, rulesetVersion string, query VersionGetParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *VersionService) Get(ctx context.Context, rulesetID string, rulesetVersion string, query VersionGetParams, opts ...option.RequestOption) (res *VersionGetResponse, err error) { opts = append(r.Options[:], opts...) var env VersionGetResponseEnvelope var accountOrZone string @@ -202,6 +204,894 @@ func (r VersionListResponsePhase) IsKnown() bool { return false } +// A ruleset object. +type VersionGetResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind VersionGetResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase VersionGetResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []VersionGetResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON versionGetResponseJSON `json:"-"` +} + +// versionGetResponseJSON contains the JSON metadata for the struct +// [VersionGetResponse] +type versionGetResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type VersionGetResponseKind string + +const ( + VersionGetResponseKindManaged VersionGetResponseKind = "managed" + VersionGetResponseKindCustom VersionGetResponseKind = "custom" + VersionGetResponseKindRoot VersionGetResponseKind = "root" + VersionGetResponseKindZone VersionGetResponseKind = "zone" +) + +func (r VersionGetResponseKind) IsKnown() bool { + switch r { + case VersionGetResponseKindManaged, VersionGetResponseKindCustom, VersionGetResponseKindRoot, VersionGetResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type VersionGetResponsePhase string + +const ( + VersionGetResponsePhaseDDoSL4 VersionGetResponsePhase = "ddos_l4" + VersionGetResponsePhaseDDoSL7 VersionGetResponsePhase = "ddos_l7" + VersionGetResponsePhaseHTTPConfigSettings VersionGetResponsePhase = "http_config_settings" + VersionGetResponsePhaseHTTPCustomErrors VersionGetResponsePhase = "http_custom_errors" + VersionGetResponsePhaseHTTPLogCustomFields VersionGetResponsePhase = "http_log_custom_fields" + VersionGetResponsePhaseHTTPRatelimit VersionGetResponsePhase = "http_ratelimit" + VersionGetResponsePhaseHTTPRequestCacheSettings VersionGetResponsePhase = "http_request_cache_settings" + VersionGetResponsePhaseHTTPRequestDynamicRedirect VersionGetResponsePhase = "http_request_dynamic_redirect" + VersionGetResponsePhaseHTTPRequestFirewallCustom VersionGetResponsePhase = "http_request_firewall_custom" + VersionGetResponsePhaseHTTPRequestFirewallManaged VersionGetResponsePhase = "http_request_firewall_managed" + VersionGetResponsePhaseHTTPRequestLateTransform VersionGetResponsePhase = "http_request_late_transform" + VersionGetResponsePhaseHTTPRequestOrigin VersionGetResponsePhase = "http_request_origin" + VersionGetResponsePhaseHTTPRequestRedirect VersionGetResponsePhase = "http_request_redirect" + VersionGetResponsePhaseHTTPRequestSanitize VersionGetResponsePhase = "http_request_sanitize" + VersionGetResponsePhaseHTTPRequestSbfm VersionGetResponsePhase = "http_request_sbfm" + VersionGetResponsePhaseHTTPRequestSelectConfiguration VersionGetResponsePhase = "http_request_select_configuration" + VersionGetResponsePhaseHTTPRequestTransform VersionGetResponsePhase = "http_request_transform" + VersionGetResponsePhaseHTTPResponseCompression VersionGetResponsePhase = "http_response_compression" + VersionGetResponsePhaseHTTPResponseFirewallManaged VersionGetResponsePhase = "http_response_firewall_managed" + VersionGetResponsePhaseHTTPResponseHeadersTransform VersionGetResponsePhase = "http_response_headers_transform" + VersionGetResponsePhaseMagicTransit VersionGetResponsePhase = "magic_transit" + VersionGetResponsePhaseMagicTransitIDsManaged VersionGetResponsePhase = "magic_transit_ids_managed" + VersionGetResponsePhaseMagicTransitManaged VersionGetResponsePhase = "magic_transit_managed" +) + +func (r VersionGetResponsePhase) IsKnown() bool { + switch r { + case VersionGetResponsePhaseDDoSL4, VersionGetResponsePhaseDDoSL7, VersionGetResponsePhaseHTTPConfigSettings, VersionGetResponsePhaseHTTPCustomErrors, VersionGetResponsePhaseHTTPLogCustomFields, VersionGetResponsePhaseHTTPRatelimit, VersionGetResponsePhaseHTTPRequestCacheSettings, VersionGetResponsePhaseHTTPRequestDynamicRedirect, VersionGetResponsePhaseHTTPRequestFirewallCustom, VersionGetResponsePhaseHTTPRequestFirewallManaged, VersionGetResponsePhaseHTTPRequestLateTransform, VersionGetResponsePhaseHTTPRequestOrigin, VersionGetResponsePhaseHTTPRequestRedirect, VersionGetResponsePhaseHTTPRequestSanitize, VersionGetResponsePhaseHTTPRequestSbfm, VersionGetResponsePhaseHTTPRequestSelectConfiguration, VersionGetResponsePhaseHTTPRequestTransform, VersionGetResponsePhaseHTTPResponseCompression, VersionGetResponsePhaseHTTPResponseFirewallManaged, VersionGetResponsePhaseHTTPResponseHeadersTransform, VersionGetResponsePhaseMagicTransit, VersionGetResponsePhaseMagicTransitIDsManaged, VersionGetResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.VersionGetResponseRulesRulesetsBlockRule], +// [rulesets.VersionGetResponseRulesRulesetsExecuteRule], +// [rulesets.VersionGetResponseRulesRulesetsLogRule] or +// [rulesets.VersionGetResponseRulesRulesetsSkipRule]. +type VersionGetResponseRule interface { + implementsRulesetsVersionGetResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*VersionGetResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionGetResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionGetResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionGetResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionGetResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type VersionGetResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionGetResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters VersionGetResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionGetResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionGetResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for the +// struct [VersionGetResponseRulesRulesetsBlockRule] +type versionGetResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionGetResponseRulesRulesetsBlockRule) implementsRulesetsVersionGetResponseRule() {} + +// The action to perform when the rule matches. +type VersionGetResponseRulesRulesetsBlockRuleAction string + +const ( + VersionGetResponseRulesRulesetsBlockRuleActionBlock VersionGetResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r VersionGetResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type VersionGetResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response VersionGetResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON versionGetResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsBlockRuleActionParametersJSON contains the JSON +// metadata for the struct +// [VersionGetResponseRulesRulesetsBlockRuleActionParameters] +type versionGetResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type VersionGetResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON versionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON contains +// the JSON metadata for the struct +// [VersionGetResponseRulesRulesetsBlockRuleActionParametersResponse] +type versionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type VersionGetResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionGetResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON metadata +// for the struct [VersionGetResponseRulesRulesetsBlockRuleLogging] +type versionGetResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type VersionGetResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionGetResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters VersionGetResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionGetResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionGetResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata for +// the struct [VersionGetResponseRulesRulesetsExecuteRule] +type versionGetResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionGetResponseRulesRulesetsExecuteRule) implementsRulesetsVersionGetResponseRule() {} + +// The action to perform when the rule matches. +type VersionGetResponseRulesRulesetsExecuteRuleAction string + +const ( + VersionGetResponseRulesRulesetsExecuteRuleActionExecute VersionGetResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r VersionGetResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type VersionGetResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData VersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON versionGetResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsExecuteRuleActionParametersJSON contains the JSON +// metadata for the struct +// [VersionGetResponseRulesRulesetsExecuteRuleActionParameters] +type versionGetResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type VersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON versionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [VersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type versionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON contains +// the JSON metadata for the struct +// [VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, VersionGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type VersionGetResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionGetResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON metadata +// for the struct [VersionGetResponseRulesRulesetsExecuteRuleLogging] +type versionGetResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type VersionGetResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionGetResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionGetResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionGetResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsLogRuleJSON contains the JSON metadata for the +// struct [VersionGetResponseRulesRulesetsLogRule] +type versionGetResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionGetResponseRulesRulesetsLogRule) implementsRulesetsVersionGetResponseRule() {} + +// The action to perform when the rule matches. +type VersionGetResponseRulesRulesetsLogRuleAction string + +const ( + VersionGetResponseRulesRulesetsLogRuleActionLog VersionGetResponseRulesRulesetsLogRuleAction = "log" +) + +func (r VersionGetResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type VersionGetResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionGetResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsLogRuleLoggingJSON contains the JSON metadata for +// the struct [VersionGetResponseRulesRulesetsLogRuleLogging] +type versionGetResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type VersionGetResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionGetResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters VersionGetResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionGetResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionGetResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for the +// struct [VersionGetResponseRulesRulesetsSkipRule] +type versionGetResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionGetResponseRulesRulesetsSkipRule) implementsRulesetsVersionGetResponseRule() {} + +// The action to perform when the rule matches. +type VersionGetResponseRulesRulesetsSkipRuleAction string + +const ( + VersionGetResponseRulesRulesetsSkipRuleActionSkip VersionGetResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r VersionGetResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type VersionGetResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset VersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON versionGetResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsSkipRuleActionParametersJSON contains the JSON +// metadata for the struct +// [VersionGetResponseRulesRulesetsSkipRuleActionParameters] +type versionGetResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r VersionGetResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, VersionGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + VersionGetResponseRulesRulesetsSkipRuleActionParametersProductBic VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + VersionGetResponseRulesRulesetsSkipRuleActionParametersProductHot VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + VersionGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + VersionGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + VersionGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + VersionGetResponseRulesRulesetsSkipRuleActionParametersProductWAF VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + VersionGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r VersionGetResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsSkipRuleActionParametersProductBic, VersionGetResponseRulesRulesetsSkipRuleActionParametersProductHot, VersionGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, VersionGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, VersionGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock, VersionGetResponseRulesRulesetsSkipRuleActionParametersProductWAF, VersionGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type VersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + VersionGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent VersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r VersionGetResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case VersionGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type VersionGetResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionGetResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// versionGetResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON metadata +// for the struct [VersionGetResponseRulesRulesetsSkipRuleLogging] +type versionGetResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionGetResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionGetResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + type VersionListParams struct { // The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. AccountID param.Field[string] `path:"account_id"` @@ -229,8 +1119,8 @@ type VersionGetResponseEnvelope struct { Errors []VersionGetResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []VersionGetResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result VersionGetResponse `json:"result,required"` // Whether the API call was successful. Success VersionGetResponseEnvelopeSuccess `json:"success,required"` JSON versionGetResponseEnvelopeJSON `json:"-"` diff --git a/rulesets/versionbytag.go b/rulesets/versionbytag.go index 2f4335adfd..4408478149 100644 --- a/rulesets/versionbytag.go +++ b/rulesets/versionbytag.go @@ -6,11 +6,14 @@ import ( "context" "fmt" "net/http" + "reflect" + "time" "github.com/cloudflare/cloudflare-go/v2/internal/apijson" "github.com/cloudflare/cloudflare-go/v2/internal/param" "github.com/cloudflare/cloudflare-go/v2/internal/requestconfig" "github.com/cloudflare/cloudflare-go/v2/option" + "github.com/tidwall/gjson" ) // VersionByTagService contains methods and other services that help with @@ -32,7 +35,7 @@ func NewVersionByTagService(opts ...option.RequestOption) (r *VersionByTagServic } // Fetches the rules of a managed account ruleset version for a given tag. -func (r *VersionByTagService) Get(ctx context.Context, rulesetID string, rulesetVersion string, ruleTag string, query VersionByTagGetParams, opts ...option.RequestOption) (res *Ruleset, err error) { +func (r *VersionByTagService) Get(ctx context.Context, rulesetID string, rulesetVersion string, ruleTag string, query VersionByTagGetParams, opts ...option.RequestOption) (res *VersionByTagGetResponse, err error) { opts = append(r.Options[:], opts...) var env VersionByTagGetResponseEnvelope path := fmt.Sprintf("accounts/%s/rulesets/%s/versions/%s/by_tag/%s", query.AccountID, rulesetID, rulesetVersion, ruleTag) @@ -44,6 +47,898 @@ func (r *VersionByTagService) Get(ctx context.Context, rulesetID string, ruleset return } +// A ruleset object. +type VersionByTagGetResponse struct { + // The unique ID of the ruleset. + ID string `json:"id,required"` + // The kind of the ruleset. + Kind VersionByTagGetResponseKind `json:"kind,required"` + // The timestamp of when the ruleset was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The human-readable name of the ruleset. + Name string `json:"name,required"` + // The phase of the ruleset. + Phase VersionByTagGetResponsePhase `json:"phase,required"` + // The list of rules in the ruleset. + Rules []VersionByTagGetResponseRule `json:"rules,required"` + // The version of the ruleset. + Version string `json:"version,required"` + // An informative description of the ruleset. + Description string `json:"description"` + JSON versionByTagGetResponseJSON `json:"-"` +} + +// versionByTagGetResponseJSON contains the JSON metadata for the struct +// [VersionByTagGetResponse] +type versionByTagGetResponseJSON struct { + ID apijson.Field + Kind apijson.Field + LastUpdated apijson.Field + Name apijson.Field + Phase apijson.Field + Rules apijson.Field + Version apijson.Field + Description apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseJSON) RawJSON() string { + return r.raw +} + +// The kind of the ruleset. +type VersionByTagGetResponseKind string + +const ( + VersionByTagGetResponseKindManaged VersionByTagGetResponseKind = "managed" + VersionByTagGetResponseKindCustom VersionByTagGetResponseKind = "custom" + VersionByTagGetResponseKindRoot VersionByTagGetResponseKind = "root" + VersionByTagGetResponseKindZone VersionByTagGetResponseKind = "zone" +) + +func (r VersionByTagGetResponseKind) IsKnown() bool { + switch r { + case VersionByTagGetResponseKindManaged, VersionByTagGetResponseKindCustom, VersionByTagGetResponseKindRoot, VersionByTagGetResponseKindZone: + return true + } + return false +} + +// The phase of the ruleset. +type VersionByTagGetResponsePhase string + +const ( + VersionByTagGetResponsePhaseDDoSL4 VersionByTagGetResponsePhase = "ddos_l4" + VersionByTagGetResponsePhaseDDoSL7 VersionByTagGetResponsePhase = "ddos_l7" + VersionByTagGetResponsePhaseHTTPConfigSettings VersionByTagGetResponsePhase = "http_config_settings" + VersionByTagGetResponsePhaseHTTPCustomErrors VersionByTagGetResponsePhase = "http_custom_errors" + VersionByTagGetResponsePhaseHTTPLogCustomFields VersionByTagGetResponsePhase = "http_log_custom_fields" + VersionByTagGetResponsePhaseHTTPRatelimit VersionByTagGetResponsePhase = "http_ratelimit" + VersionByTagGetResponsePhaseHTTPRequestCacheSettings VersionByTagGetResponsePhase = "http_request_cache_settings" + VersionByTagGetResponsePhaseHTTPRequestDynamicRedirect VersionByTagGetResponsePhase = "http_request_dynamic_redirect" + VersionByTagGetResponsePhaseHTTPRequestFirewallCustom VersionByTagGetResponsePhase = "http_request_firewall_custom" + VersionByTagGetResponsePhaseHTTPRequestFirewallManaged VersionByTagGetResponsePhase = "http_request_firewall_managed" + VersionByTagGetResponsePhaseHTTPRequestLateTransform VersionByTagGetResponsePhase = "http_request_late_transform" + VersionByTagGetResponsePhaseHTTPRequestOrigin VersionByTagGetResponsePhase = "http_request_origin" + VersionByTagGetResponsePhaseHTTPRequestRedirect VersionByTagGetResponsePhase = "http_request_redirect" + VersionByTagGetResponsePhaseHTTPRequestSanitize VersionByTagGetResponsePhase = "http_request_sanitize" + VersionByTagGetResponsePhaseHTTPRequestSbfm VersionByTagGetResponsePhase = "http_request_sbfm" + VersionByTagGetResponsePhaseHTTPRequestSelectConfiguration VersionByTagGetResponsePhase = "http_request_select_configuration" + VersionByTagGetResponsePhaseHTTPRequestTransform VersionByTagGetResponsePhase = "http_request_transform" + VersionByTagGetResponsePhaseHTTPResponseCompression VersionByTagGetResponsePhase = "http_response_compression" + VersionByTagGetResponsePhaseHTTPResponseFirewallManaged VersionByTagGetResponsePhase = "http_response_firewall_managed" + VersionByTagGetResponsePhaseHTTPResponseHeadersTransform VersionByTagGetResponsePhase = "http_response_headers_transform" + VersionByTagGetResponsePhaseMagicTransit VersionByTagGetResponsePhase = "magic_transit" + VersionByTagGetResponsePhaseMagicTransitIDsManaged VersionByTagGetResponsePhase = "magic_transit_ids_managed" + VersionByTagGetResponsePhaseMagicTransitManaged VersionByTagGetResponsePhase = "magic_transit_managed" +) + +func (r VersionByTagGetResponsePhase) IsKnown() bool { + switch r { + case VersionByTagGetResponsePhaseDDoSL4, VersionByTagGetResponsePhaseDDoSL7, VersionByTagGetResponsePhaseHTTPConfigSettings, VersionByTagGetResponsePhaseHTTPCustomErrors, VersionByTagGetResponsePhaseHTTPLogCustomFields, VersionByTagGetResponsePhaseHTTPRatelimit, VersionByTagGetResponsePhaseHTTPRequestCacheSettings, VersionByTagGetResponsePhaseHTTPRequestDynamicRedirect, VersionByTagGetResponsePhaseHTTPRequestFirewallCustom, VersionByTagGetResponsePhaseHTTPRequestFirewallManaged, VersionByTagGetResponsePhaseHTTPRequestLateTransform, VersionByTagGetResponsePhaseHTTPRequestOrigin, VersionByTagGetResponsePhaseHTTPRequestRedirect, VersionByTagGetResponsePhaseHTTPRequestSanitize, VersionByTagGetResponsePhaseHTTPRequestSbfm, VersionByTagGetResponsePhaseHTTPRequestSelectConfiguration, VersionByTagGetResponsePhaseHTTPRequestTransform, VersionByTagGetResponsePhaseHTTPResponseCompression, VersionByTagGetResponsePhaseHTTPResponseFirewallManaged, VersionByTagGetResponsePhaseHTTPResponseHeadersTransform, VersionByTagGetResponsePhaseMagicTransit, VersionByTagGetResponsePhaseMagicTransitIDsManaged, VersionByTagGetResponsePhaseMagicTransitManaged: + return true + } + return false +} + +// Union satisfied by [rulesets.VersionByTagGetResponseRulesRulesetsBlockRule], +// [rulesets.VersionByTagGetResponseRulesRulesetsExecuteRule], +// [rulesets.VersionByTagGetResponseRulesRulesetsLogRule] or +// [rulesets.VersionByTagGetResponseRulesRulesetsSkipRule]. +type VersionByTagGetResponseRule interface { + implementsRulesetsVersionByTagGetResponseRule() +} + +func init() { + apijson.RegisterUnion( + reflect.TypeOf((*VersionByTagGetResponseRule)(nil)).Elem(), + "action", + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionByTagGetResponseRulesRulesetsBlockRule{}), + DiscriminatorValue: "block", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionByTagGetResponseRulesRulesetsExecuteRule{}), + DiscriminatorValue: "execute", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionByTagGetResponseRulesRulesetsLogRule{}), + DiscriminatorValue: "log", + }, + apijson.UnionVariant{ + TypeFilter: gjson.JSON, + Type: reflect.TypeOf(VersionByTagGetResponseRulesRulesetsSkipRule{}), + DiscriminatorValue: "skip", + }, + ) +} + +type VersionByTagGetResponseRulesRulesetsBlockRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionByTagGetResponseRulesRulesetsBlockRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters VersionByTagGetResponseRulesRulesetsBlockRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionByTagGetResponseRulesRulesetsBlockRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionByTagGetResponseRulesRulesetsBlockRuleJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsBlockRuleJSON contains the JSON metadata for +// the struct [VersionByTagGetResponseRulesRulesetsBlockRule] +type versionByTagGetResponseRulesRulesetsBlockRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsBlockRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsBlockRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionByTagGetResponseRulesRulesetsBlockRule) implementsRulesetsVersionByTagGetResponseRule() { +} + +// The action to perform when the rule matches. +type VersionByTagGetResponseRulesRulesetsBlockRuleAction string + +const ( + VersionByTagGetResponseRulesRulesetsBlockRuleActionBlock VersionByTagGetResponseRulesRulesetsBlockRuleAction = "block" +) + +func (r VersionByTagGetResponseRulesRulesetsBlockRuleAction) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsBlockRuleActionBlock: + return true + } + return false +} + +// The parameters configuring the rule's action. +type VersionByTagGetResponseRulesRulesetsBlockRuleActionParameters struct { + // The response to show when the block is applied. + Response VersionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponse `json:"response"` + JSON versionByTagGetResponseRulesRulesetsBlockRuleActionParametersJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsBlockRuleActionParametersJSON contains the +// JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsBlockRuleActionParameters] +type versionByTagGetResponseRulesRulesetsBlockRuleActionParametersJSON struct { + Response apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsBlockRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsBlockRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The response to show when the block is applied. +type VersionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponse struct { + // The content to return. + Content string `json:"content,required"` + // The type of the content to return. + ContentType string `json:"content_type,required"` + // The status code to return. + StatusCode int64 `json:"status_code,required"` + JSON versionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON +// contains the JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponse] +type versionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON struct { + Content apijson.Field + ContentType apijson.Field + StatusCode apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponse) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsBlockRuleActionParametersResponseJSON) RawJSON() string { + return r.raw +} + +// An object configuring the rule's logging behavior. +type VersionByTagGetResponseRulesRulesetsBlockRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionByTagGetResponseRulesRulesetsBlockRuleLoggingJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsBlockRuleLoggingJSON contains the JSON +// metadata for the struct [VersionByTagGetResponseRulesRulesetsBlockRuleLogging] +type versionByTagGetResponseRulesRulesetsBlockRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsBlockRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsBlockRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type VersionByTagGetResponseRulesRulesetsExecuteRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionByTagGetResponseRulesRulesetsExecuteRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters VersionByTagGetResponseRulesRulesetsExecuteRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionByTagGetResponseRulesRulesetsExecuteRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionByTagGetResponseRulesRulesetsExecuteRuleJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsExecuteRuleJSON contains the JSON metadata +// for the struct [VersionByTagGetResponseRulesRulesetsExecuteRule] +type versionByTagGetResponseRulesRulesetsExecuteRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsExecuteRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsExecuteRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionByTagGetResponseRulesRulesetsExecuteRule) implementsRulesetsVersionByTagGetResponseRule() { +} + +// The action to perform when the rule matches. +type VersionByTagGetResponseRulesRulesetsExecuteRuleAction string + +const ( + VersionByTagGetResponseRulesRulesetsExecuteRuleActionExecute VersionByTagGetResponseRulesRulesetsExecuteRuleAction = "execute" +) + +func (r VersionByTagGetResponseRulesRulesetsExecuteRuleAction) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsExecuteRuleActionExecute: + return true + } + return false +} + +// The parameters configuring the rule's action. +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParameters struct { + // The ID of the ruleset to execute. + ID string `json:"id,required"` + // The configuration to use for matched data logging. + MatchedData VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData `json:"matched_data"` + // A set of overrides to apply to the target ruleset. + Overrides VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverrides `json:"overrides"` + JSON versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersJSON contains the +// JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsExecuteRuleActionParameters] +type versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersJSON struct { + ID apijson.Field + MatchedData apijson.Field + Overrides apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsExecuteRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// The configuration to use for matched data logging. +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData struct { + // The public key to encrypt matched data logs with. + PublicKey string `json:"public_key,required"` + JSON versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON +// contains the JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData] +type versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON struct { + PublicKey apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedData) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersMatchedDataJSON) RawJSON() string { + return r.raw +} + +// A set of overrides to apply to the target ruleset. +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverrides struct { + // An action to override all rules with. This option has lower precedence than rule + // and category overrides. + Action string `json:"action"` + // A list of category-level overrides. This option has the second-highest + // precedence after rule-level overrides. + Categories []VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory `json:"categories"` + // Whether to enable execution of all rules. This option has lower precedence than + // rule and category overrides. + Enabled bool `json:"enabled"` + // A list of rule-level overrides. This option has the highest precedence. + Rules []VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule `json:"rules"` + // A sensitivity level to set for all rules. This option has lower precedence than + // rule and category overrides and is only applicable for DDoS phases. + SensitivityLevel VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel `json:"sensitivity_level"` + JSON versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON +// contains the JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverrides] +type versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON struct { + Action apijson.Field + Categories apijson.Field + Enabled apijson.Field + Rules apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverrides) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesJSON) RawJSON() string { + return r.raw +} + +// A category-level override +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory struct { + // The name of the category to override. + Category string `json:"category,required"` + // The action to override rules in the category with. + Action string `json:"action"` + // Whether to enable execution of rules in the category. + Enabled bool `json:"enabled"` + // The sensitivity level to use for rules in the category. + SensitivityLevel VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel `json:"sensitivity_level"` + JSON versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON +// contains the JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory] +type versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON struct { + Category apijson.Field + Action apijson.Field + Enabled apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategory) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoryJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for rules in the category. +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel string + +const ( + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "default" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "medium" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "low" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel = "eoff" +) + +func (r VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevel) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelDefault, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelMedium, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelLow, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesCategoriesSensitivityLevelEoff: + return true + } + return false +} + +// A rule-level override +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule struct { + // The ID of the rule to override. + ID string `json:"id,required"` + // The action to override the rule with. + Action string `json:"action"` + // Whether to enable execution of the rule. + Enabled bool `json:"enabled"` + // The score threshold to use for the rule. + ScoreThreshold int64 `json:"score_threshold"` + // The sensitivity level to use for the rule. + SensitivityLevel VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel `json:"sensitivity_level"` + JSON versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON +// contains the JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule] +type versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON struct { + ID apijson.Field + Action apijson.Field + Enabled apijson.Field + ScoreThreshold apijson.Field + SensitivityLevel apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRuleJSON) RawJSON() string { + return r.raw +} + +// The sensitivity level to use for the rule. +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel string + +const ( + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "default" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "medium" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "low" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel = "eoff" +) + +func (r VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevel) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelDefault, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelMedium, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelLow, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesRulesSensitivityLevelEoff: + return true + } + return false +} + +// A sensitivity level to set for all rules. This option has lower precedence than +// rule and category overrides and is only applicable for DDoS phases. +type VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel string + +const ( + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "default" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "medium" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "low" + VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel = "eoff" +) + +func (r VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevel) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelDefault, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelMedium, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelLow, VersionByTagGetResponseRulesRulesetsExecuteRuleActionParametersOverridesSensitivityLevelEoff: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type VersionByTagGetResponseRulesRulesetsExecuteRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionByTagGetResponseRulesRulesetsExecuteRuleLoggingJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsExecuteRuleLoggingJSON contains the JSON +// metadata for the struct [VersionByTagGetResponseRulesRulesetsExecuteRuleLogging] +type versionByTagGetResponseRulesRulesetsExecuteRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsExecuteRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsExecuteRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type VersionByTagGetResponseRulesRulesetsLogRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionByTagGetResponseRulesRulesetsLogRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters interface{} `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionByTagGetResponseRulesRulesetsLogRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionByTagGetResponseRulesRulesetsLogRuleJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsLogRuleJSON contains the JSON metadata for +// the struct [VersionByTagGetResponseRulesRulesetsLogRule] +type versionByTagGetResponseRulesRulesetsLogRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsLogRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsLogRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionByTagGetResponseRulesRulesetsLogRule) implementsRulesetsVersionByTagGetResponseRule() { +} + +// The action to perform when the rule matches. +type VersionByTagGetResponseRulesRulesetsLogRuleAction string + +const ( + VersionByTagGetResponseRulesRulesetsLogRuleActionLog VersionByTagGetResponseRulesRulesetsLogRuleAction = "log" +) + +func (r VersionByTagGetResponseRulesRulesetsLogRuleAction) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsLogRuleActionLog: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type VersionByTagGetResponseRulesRulesetsLogRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionByTagGetResponseRulesRulesetsLogRuleLoggingJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsLogRuleLoggingJSON contains the JSON +// metadata for the struct [VersionByTagGetResponseRulesRulesetsLogRuleLogging] +type versionByTagGetResponseRulesRulesetsLogRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsLogRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsLogRuleLoggingJSON) RawJSON() string { + return r.raw +} + +type VersionByTagGetResponseRulesRulesetsSkipRule struct { + // The timestamp of when the rule was last modified. + LastUpdated time.Time `json:"last_updated,required" format:"date-time"` + // The version of the rule. + Version string `json:"version,required"` + // The unique ID of the rule. + ID string `json:"id"` + // The action to perform when the rule matches. + Action VersionByTagGetResponseRulesRulesetsSkipRuleAction `json:"action"` + // The parameters configuring the rule's action. + ActionParameters VersionByTagGetResponseRulesRulesetsSkipRuleActionParameters `json:"action_parameters"` + // The categories of the rule. + Categories []string `json:"categories"` + // An informative description of the rule. + Description string `json:"description"` + // Whether the rule should be executed. + Enabled bool `json:"enabled"` + // The expression defining which traffic will match the rule. + Expression string `json:"expression"` + // An object configuring the rule's logging behavior. + Logging VersionByTagGetResponseRulesRulesetsSkipRuleLogging `json:"logging"` + // The reference of the rule (the rule ID by default). + Ref string `json:"ref"` + JSON versionByTagGetResponseRulesRulesetsSkipRuleJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsSkipRuleJSON contains the JSON metadata for +// the struct [VersionByTagGetResponseRulesRulesetsSkipRule] +type versionByTagGetResponseRulesRulesetsSkipRuleJSON struct { + LastUpdated apijson.Field + Version apijson.Field + ID apijson.Field + Action apijson.Field + ActionParameters apijson.Field + Categories apijson.Field + Description apijson.Field + Enabled apijson.Field + Expression apijson.Field + Logging apijson.Field + Ref apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsSkipRule) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsSkipRuleJSON) RawJSON() string { + return r.raw +} + +func (r VersionByTagGetResponseRulesRulesetsSkipRule) implementsRulesetsVersionByTagGetResponseRule() { +} + +// The action to perform when the rule matches. +type VersionByTagGetResponseRulesRulesetsSkipRuleAction string + +const ( + VersionByTagGetResponseRulesRulesetsSkipRuleActionSkip VersionByTagGetResponseRulesRulesetsSkipRuleAction = "skip" +) + +func (r VersionByTagGetResponseRulesRulesetsSkipRuleAction) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsSkipRuleActionSkip: + return true + } + return false +} + +// The parameters configuring the rule's action. +type VersionByTagGetResponseRulesRulesetsSkipRuleActionParameters struct { + // A list of phases to skip the execution of. This option is incompatible with the + // ruleset and rulesets options. + Phases []VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase `json:"phases"` + // A list of legacy security products to skip the execution of. + Products []VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct `json:"products"` + // A mapping of ruleset IDs to a list of rule IDs in that ruleset to skip the + // execution of. This option is incompatible with the ruleset option. + Rules map[string][]string `json:"rules"` + // A ruleset to skip the execution of. This option is incompatible with the + // rulesets, rules and phases options. + Ruleset VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersRuleset `json:"ruleset"` + // A list of ruleset IDs to skip the execution of. This option is incompatible with + // the ruleset and phases options. + Rulesets []string `json:"rulesets"` + JSON versionByTagGetResponseRulesRulesetsSkipRuleActionParametersJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsSkipRuleActionParametersJSON contains the +// JSON metadata for the struct +// [VersionByTagGetResponseRulesRulesetsSkipRuleActionParameters] +type versionByTagGetResponseRulesRulesetsSkipRuleActionParametersJSON struct { + Phases apijson.Field + Products apijson.Field + Rules apijson.Field + Ruleset apijson.Field + Rulesets apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsSkipRuleActionParameters) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsSkipRuleActionParametersJSON) RawJSON() string { + return r.raw +} + +// A phase to skip the execution of. +type VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase string + +const ( + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4 VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l4" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7 VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "ddos_l7" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_config_settings" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_custom_errors" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_log_custom_fields" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_ratelimit" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_cache_settings" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_dynamic_redirect" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_custom" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_firewall_managed" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_late_transform" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_origin" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_redirect" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sanitize" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_sbfm" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_select_configuration" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_request_transform" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_compression" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_firewall_managed" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "http_response_headers_transform" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_ids_managed" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase = "magic_transit_managed" +) + +func (r VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhase) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL4, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseDDoSL7, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPConfigSettings, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPCustomErrors, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPLogCustomFields, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRatelimit, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestCacheSettings, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestDynamicRedirect, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallCustom, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestFirewallManaged, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestLateTransform, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestOrigin, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestRedirect, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSanitize, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSbfm, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestSelectConfiguration, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPRequestTransform, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseCompression, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseFirewallManaged, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseHTTPResponseHeadersTransform, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransit, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitIDsManaged, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersPhaseMagicTransitManaged: + return true + } + return false +} + +// The name of a legacy security product to skip the execution of. +type VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct string + +const ( + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductBic VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct = "bic" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductHot VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct = "hot" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct = "rateLimit" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct = "securityLevel" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct = "uaBlock" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductWAF VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct = "waf" + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct = "zoneLockdown" +) + +func (r VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProduct) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductBic, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductHot, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductRateLimit, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductSecurityLevel, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductUABlock, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductWAF, VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersProductZoneLockdown: + return true + } + return false +} + +// A ruleset to skip the execution of. This option is incompatible with the +// rulesets, rules and phases options. +type VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersRuleset string + +const ( + VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersRuleset = "current" +) + +func (r VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersRuleset) IsKnown() bool { + switch r { + case VersionByTagGetResponseRulesRulesetsSkipRuleActionParametersRulesetCurrent: + return true + } + return false +} + +// An object configuring the rule's logging behavior. +type VersionByTagGetResponseRulesRulesetsSkipRuleLogging struct { + // Whether to generate a log when the rule matches. + Enabled bool `json:"enabled,required"` + JSON versionByTagGetResponseRulesRulesetsSkipRuleLoggingJSON `json:"-"` +} + +// versionByTagGetResponseRulesRulesetsSkipRuleLoggingJSON contains the JSON +// metadata for the struct [VersionByTagGetResponseRulesRulesetsSkipRuleLogging] +type versionByTagGetResponseRulesRulesetsSkipRuleLoggingJSON struct { + Enabled apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *VersionByTagGetResponseRulesRulesetsSkipRuleLogging) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r versionByTagGetResponseRulesRulesetsSkipRuleLoggingJSON) RawJSON() string { + return r.raw +} + type VersionByTagGetParams struct { // The unique ID of the account. AccountID param.Field[string] `path:"account_id,required"` @@ -55,8 +950,8 @@ type VersionByTagGetResponseEnvelope struct { Errors []VersionByTagGetResponseEnvelopeErrors `json:"errors,required"` // A list of warning messages. Messages []VersionByTagGetResponseEnvelopeMessages `json:"messages,required"` - // A result. - Result Ruleset `json:"result,required"` + // A ruleset object. + Result VersionByTagGetResponse `json:"result,required"` // Whether the API call was successful. Success VersionByTagGetResponseEnvelopeSuccess `json:"success,required"` JSON versionByTagGetResponseEnvelopeJSON `json:"-"`