# Filters ## List filters `filters.list(FilterListParams**kwargs) -> SyncV4PagePaginationArray[FirewallFilter]` **get** `/zones/{zone_id}/filters` Fetches filters in a zone. You can filter the results using several optional parameters. ### Parameters - `zone_id: str` Defines an identifier. - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` A case-insensitive string to find in the description. - `expression: Optional[str]` A case-insensitive string to find in the expression. - `page: Optional[float]` Page number of paginated results. - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `per_page: Optional[float]` Number of filters per page. - `ref: Optional[str]` The filter ref (a short reference tag) to search for. Must be an exact match. ### Returns - `class FirewallFilter: …` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### 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.filters.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": "372e67954025e0ba6aaa6d586b9e0b61", "description": "Restrict access from these browsers on this address range.", "expression": "(http.request.uri.path ~ \".*wp-login.php\" or http.request.uri.path ~ \".*xmlrpc.php\") and ip.addr ne 172.16.22.155", "paused": false, "ref": "FIL-100" } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Get a filter `filters.get(strfilter_id, FilterGetParams**kwargs) -> FirewallFilter` **get** `/zones/{zone_id}/filters/{filter_id}` Fetches the details of a filter. ### Parameters - `zone_id: str` Defines an identifier. - `filter_id: str` The unique identifier of the filter. ### Returns - `class FirewallFilter: …` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### 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 ) firewall_filter = client.filters.get( filter_id="372e67954025e0ba6aaa6d586b9e0b61", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(firewall_filter.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": "372e67954025e0ba6aaa6d586b9e0b61", "description": "Restrict access from these browsers on this address range.", "expression": "(http.request.uri.path ~ \".*wp-login.php\" or http.request.uri.path ~ \".*xmlrpc.php\") and ip.addr ne 172.16.22.155", "paused": false, "ref": "FIL-100" }, "success": true } ``` ## Create filters `filters.create(FilterCreateParams**kwargs) -> SyncSinglePage[FirewallFilter]` **post** `/zones/{zone_id}/filters` Creates one or more filters. ### Parameters - `zone_id: str` Defines an identifier. - `body: Iterable[FirewallFilterParam]` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### Returns - `class FirewallFilter: …` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### 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.filters.create( zone_id="023e105f4ecef8ad9ca31a8372d0c353", body=[{}], ) 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": "372e67954025e0ba6aaa6d586b9e0b61", "description": "Restrict access from these browsers on this address range.", "expression": "(http.request.uri.path ~ \".*wp-login.php\" or http.request.uri.path ~ \".*xmlrpc.php\") and ip.addr ne 172.16.22.155", "paused": false, "ref": "FIL-100" } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Update a filter `filters.update(strfilter_id, FilterUpdateParams**kwargs) -> FirewallFilter` **put** `/zones/{zone_id}/filters/{filter_id}` Updates an existing filter. ### Parameters - `zone_id: str` Defines an identifier. - `filter_id: str` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### Returns - `class FirewallFilter: …` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### 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 ) firewall_filter = client.filters.update( filter_id="372e67954025e0ba6aaa6d586b9e0b61", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(firewall_filter.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": "372e67954025e0ba6aaa6d586b9e0b61", "description": "Restrict access from these browsers on this address range.", "expression": "(http.request.uri.path ~ \".*wp-login.php\" or http.request.uri.path ~ \".*xmlrpc.php\") and ip.addr ne 172.16.22.155", "paused": false, "ref": "FIL-100" }, "success": true } ``` ## Delete a filter `filters.delete(strfilter_id, FilterDeleteParams**kwargs) -> FilterDeleteResponse` **delete** `/zones/{zone_id}/filters/{filter_id}` Deletes an existing filter. ### Parameters - `zone_id: str` Defines an identifier. - `filter_id: str` The unique identifier of the filter. ### Returns - `class FilterDeleteResponse: …` - `id: str` The unique identifier of the filter. ### 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 ) filter = client.filters.delete( filter_id="372e67954025e0ba6aaa6d586b9e0b61", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(filter.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": "372e67954025e0ba6aaa6d586b9e0b61" }, "success": true } ``` ## Update filters `filters.bulk_update(FilterBulkUpdateParams**kwargs) -> SyncSinglePage[FirewallFilter]` **put** `/zones/{zone_id}/filters` Updates one or more existing filters. ### Parameters - `zone_id: str` Defines an identifier. - `body: Iterable[Body]` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### Returns - `class FirewallFilter: …` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### 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.filters.bulk_update( zone_id="023e105f4ecef8ad9ca31a8372d0c353", body=[{}], ) 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": "372e67954025e0ba6aaa6d586b9e0b61", "description": "Restrict access from these browsers on this address range.", "expression": "(http.request.uri.path ~ \".*wp-login.php\" or http.request.uri.path ~ \".*xmlrpc.php\") and ip.addr ne 172.16.22.155", "paused": false, "ref": "FIL-100" } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Delete filters `filters.bulk_delete(FilterBulkDeleteParams**kwargs) -> FilterBulkDeleteResponse` **delete** `/zones/{zone_id}/filters` Deletes one or more existing filters. ### Parameters - `zone_id: str` Defines an identifier. - `id: SequenceNotStr[str]` ### Returns - `Optional[List[FilterBulkDeleteResponseItem]]` - `id: Optional[str]` The unique identifier of the filter. ### 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 ) response = client.filters.bulk_delete( zone_id="023e105f4ecef8ad9ca31a8372d0c353", id=["372e67954025e0ba6aaa6d586b9e0b61"], ) print(response) ``` #### 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": "372e67954025e0ba6aaa6d586b9e0b61" } ], "success": true, "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Domain Types ### Firewall Filter - `class FirewallFilter: …` - `id: Optional[str]` The unique identifier of the filter. - `description: Optional[str]` An informative summary of the filter. - `expression: Optional[str]` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused: Optional[bool]` When true, indicates that the filter is currently paused. - `ref: Optional[str]` A short reference tag. Allows you to select related filters. ### Filter Delete Response - `class FilterDeleteResponse: …` - `id: str` The unique identifier of the filter. ### Filter Bulk Delete Response - `Optional[List[FilterBulkDeleteResponseItem]]` - `id: Optional[str]` The unique identifier of the filter.