## Update a User Agent Blocking rule `client.Firewall.UARules.Update(ctx, uaRuleID, params) (*UARuleUpdateResponse, error)` **put** `/zones/{zone_id}/firewall/ua_rules/{ua_rule_id}` Updates an existing User Agent Blocking rule. ### Parameters - `uaRuleID string` The unique identifier of the User Agent Blocking rule. - `params UARuleUpdateParams` - `ZoneID param.Field[string]` Path param: Defines an identifier. - `Configuration param.Field[UARuleUpdateParamsConfiguration]` Body param: The rule configuration. - `type AccessRuleIPConfiguration struct{…}` - `Target AccessRuleIPConfigurationTarget` The configuration target. You must set the target to `ip` when specifying an IP address in the rule. - `const AccessRuleIPConfigurationTargetIP AccessRuleIPConfigurationTarget = "ip"` - `Value string` The IP address to match. This address will be compared to the IP address of incoming requests. - `type IPV6Configuration struct{…}` - `Target IPV6ConfigurationTarget` The configuration target. You must set the target to `ip6` when specifying an IPv6 address in the rule. - `const IPV6ConfigurationTargetIp6 IPV6ConfigurationTarget = "ip6"` - `Value string` The IPv6 address to match. - `type AccessRuleCIDRConfiguration struct{…}` - `Target AccessRuleCIDRConfigurationTarget` The configuration target. You must set the target to `ip_range` when specifying an IP address range in the rule. - `const AccessRuleCIDRConfigurationTargetIPRange AccessRuleCIDRConfigurationTarget = "ip_range"` - `Value string` The IP address range to match. You can only use prefix lengths `/16` and `/24` for IPv4 ranges, and prefix lengths `/32`, `/48`, and `/64` for IPv6 ranges. - `type ASNConfiguration struct{…}` - `Target ASNConfigurationTarget` The configuration target. You must set the target to `asn` when specifying an Autonomous System Number (ASN) in the rule. - `const ASNConfigurationTargetASN ASNConfigurationTarget = "asn"` - `Value string` The AS number to match. - `type CountryConfiguration struct{…}` - `Target CountryConfigurationTarget` The configuration target. You must set the target to `country` when specifying a country code in the rule. - `const CountryConfigurationTargetCountry CountryConfigurationTarget = "country"` - `Value string` The two-letter ISO-3166-1 alpha-2 code to match. For more information, refer to [IP Access rules: Parameters](https://developers.cloudflare.com/waf/tools/ip-access-rules/parameters/#country). - `Mode param.Field[UARuleUpdateParamsMode]` Body param: The action to apply to a matched request. - `const UARuleUpdateParamsModeBlock UARuleUpdateParamsMode = "block"` - `const UARuleUpdateParamsModeChallenge UARuleUpdateParamsMode = "challenge"` - `const UARuleUpdateParamsModeWhitelist UARuleUpdateParamsMode = "whitelist"` - `const UARuleUpdateParamsModeJSChallenge UARuleUpdateParamsMode = "js_challenge"` - `const UARuleUpdateParamsModeManagedChallenge UARuleUpdateParamsMode = "managed_challenge"` - `Description param.Field[string]` Body param: An informative summary of the rule. This value is sanitized and any tags will be removed. - `Paused param.Field[bool]` Body param: When true, indicates that the rule is currently paused. ### Returns - `type UARuleUpdateResponse struct{…}` - `ID string` The unique identifier of the User Agent Blocking rule. - `Configuration UARuleUpdateResponseConfiguration` The configuration object for the current rule. - `Target string` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `Value string` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `Description string` An informative summary of the rule. - `Mode UARuleUpdateResponseMode` The action to apply to a matched request. - `const UARuleUpdateResponseModeBlock UARuleUpdateResponseMode = "block"` - `const UARuleUpdateResponseModeChallenge UARuleUpdateResponseMode = "challenge"` - `const UARuleUpdateResponseModeJSChallenge UARuleUpdateResponseMode = "js_challenge"` - `const UARuleUpdateResponseModeManagedChallenge UARuleUpdateResponseMode = "managed_challenge"` - `Paused bool` When true, indicates that the rule is currently paused. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/firewall" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) uaRule, err := client.Firewall.UARules.Update( context.TODO(), "372e67954025e0ba6aaa6d586b9e0b59", firewall.UARuleUpdateParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Configuration: cloudflare.F[firewall.UARuleUpdateParamsConfigurationUnion](firewall.AccessRuleIPConfigurationParam{ }), Mode: cloudflare.F(firewall.UARuleUpdateParamsModeChallenge), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", uaRule.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "id": "372e67954025e0ba6aaa6d586b9e0b59", "configuration": { "target": "ua", "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4" }, "description": "Prevent access from abusive clients identified by this User Agent to mitigate a DDoS attack", "mode": "js_challenge", "paused": false }, "success": true } ```