# UA Rules ## List User Agent Blocking rules `firewall.ua_rules.list(UARuleListParams**kwargs) -> SyncV4PagePaginationArray[UARuleListResponse]` **get** `/zones/{zone_id}/firewall/ua_rules` Fetches User Agent Blocking rules in a zone. You can filter the results using several optional parameters. ### Parameters - `zone_id: str` Defines an identifier. - `description: Optional[str]` A string to search for in the description of existing rules. - `page: Optional[float]` Page number of paginated results. - `paused: Optional[bool]` When true, indicates that the rule is currently paused. - `per_page: Optional[float]` The maximum number of results per page. You can only set the value to `1` or to a multiple of 5 such as `5`, `10`, `15`, or `20`. - `user_agent: Optional[str]` A string to search for in the user agent values of existing rules. ### Returns - `class UARuleListResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) page = client.firewall.ua_rules.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.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, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Get a User Agent Blocking rule `firewall.ua_rules.get(strua_rule_id, UARuleGetParams**kwargs) -> UARuleGetResponse` **get** `/zones/{zone_id}/firewall/ua_rules/{ua_rule_id}` Fetches the details of a User Agent Blocking rule. ### Parameters - `zone_id: str` Defines an identifier. - `ua_rule_id: str` The unique identifier of the User Agent Blocking rule. ### Returns - `class UARuleGetResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) ua_rule = client.firewall.ua_rules.get( ua_rule_id="372e67954025e0ba6aaa6d586b9e0b59", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(ua_rule.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 } ``` ## Create a User Agent Blocking rule `firewall.ua_rules.create(UARuleCreateParams**kwargs) -> UARuleCreateResponse` **post** `/zones/{zone_id}/firewall/ua_rules` Creates a new User Agent Blocking rule in a zone. ### Parameters - `zone_id: str` Defines an identifier. - `configuration: Configuration` - `target: Optional[Literal["ua"]]` The configuration target. You must set the target to `ua` when specifying a user agent in the rule. - `"ua"` - `value: Optional[str]` the user agent to exactly match - `mode: Literal["block", "challenge", "whitelist", 2 more]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"whitelist"` - `"js_challenge"` - `"managed_challenge"` - `description: Optional[str]` An informative summary of the rule. This value is sanitized and any tags will be removed. - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### Returns - `class UARuleCreateResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) ua_rule = client.firewall.ua_rules.create( zone_id="023e105f4ecef8ad9ca31a8372d0c353", configuration={}, mode="challenge", ) print(ua_rule.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 } ``` ## Update a User Agent Blocking rule `firewall.ua_rules.update(strua_rule_id, UARuleUpdateParams**kwargs) -> UARuleUpdateResponse` **put** `/zones/{zone_id}/firewall/ua_rules/{ua_rule_id}` Updates an existing User Agent Blocking rule. ### Parameters - `zone_id: str` Defines an identifier. - `ua_rule_id: str` The unique identifier of the User Agent Blocking rule. - `configuration: Configuration` The rule configuration. - `class AccessRuleIPConfiguration: …` - `target: Optional[Literal["ip"]]` The configuration target. You must set the target to `ip` when specifying an IP address in the rule. - `"ip"` - `value: Optional[str]` The IP address to match. This address will be compared to the IP address of incoming requests. - `class IPV6Configuration: …` - `target: Optional[Literal["ip6"]]` The configuration target. You must set the target to `ip6` when specifying an IPv6 address in the rule. - `"ip6"` - `value: Optional[str]` The IPv6 address to match. - `class AccessRuleCIDRConfiguration: …` - `target: Optional[Literal["ip_range"]]` The configuration target. You must set the target to `ip_range` when specifying an IP address range in the rule. - `"ip_range"` - `value: Optional[str]` 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. - `class ASNConfiguration: …` - `target: Optional[Literal["asn"]]` The configuration target. You must set the target to `asn` when specifying an Autonomous System Number (ASN) in the rule. - `"asn"` - `value: Optional[str]` The AS number to match. - `class CountryConfiguration: …` - `target: Optional[Literal["country"]]` The configuration target. You must set the target to `country` when specifying a country code in the rule. - `"country"` - `value: Optional[str]` 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: Literal["block", "challenge", "whitelist", 2 more]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"whitelist"` - `"js_challenge"` - `"managed_challenge"` - `description: Optional[str]` An informative summary of the rule. This value is sanitized and any tags will be removed. - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### Returns - `class UARuleUpdateResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) ua_rule = client.firewall.ua_rules.update( ua_rule_id="372e67954025e0ba6aaa6d586b9e0b59", zone_id="023e105f4ecef8ad9ca31a8372d0c353", configuration={}, mode="challenge", ) print(ua_rule.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 } ``` ## Delete a User Agent Blocking rule `firewall.ua_rules.delete(strua_rule_id, UARuleDeleteParams**kwargs) -> UARuleDeleteResponse` **delete** `/zones/{zone_id}/firewall/ua_rules/{ua_rule_id}` Deletes an existing User Agent Blocking rule. ### Parameters - `zone_id: str` Defines an identifier. - `ua_rule_id: str` The unique identifier of the User Agent Blocking rule. ### Returns - `class UARuleDeleteResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_token=os.environ.get("CLOUDFLARE_API_TOKEN"), # This is the default and can be omitted ) ua_rule = client.firewall.ua_rules.delete( ua_rule_id="372e67954025e0ba6aaa6d586b9e0b59", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(ua_rule.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 } ``` ## Domain Types ### UA Rule List Response - `class UARuleListResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### UA Rule Get Response - `class UARuleGetResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### UA Rule Create Response - `class UARuleCreateResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### UA Rule Update Response - `class UARuleUpdateResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused. ### UA Rule Delete Response - `class UARuleDeleteResponse: …` - `id: Optional[str]` The unique identifier of the User Agent Blocking rule. - `configuration: Optional[Configuration]` The configuration object for the current rule. - `target: Optional[str]` The configuration target for this rule. You must set the target to `ua` for User Agent Blocking rules. - `value: Optional[str]` The exact user agent string to match. This value will be compared to the received `User-Agent` HTTP header value. - `description: Optional[str]` An informative summary of the rule. - `mode: Optional[Literal["block", "challenge", "js_challenge", "managed_challenge"]]` The action to apply to a matched request. - `"block"` - `"challenge"` - `"js_challenge"` - `"managed_challenge"` - `paused: Optional[bool]` When true, indicates that the rule is currently paused.