# Filters ## List filters `client.filters.list(FilterListParamsparams, RequestOptionsoptions?): V4PagePaginationArray` **get** `/zones/{zone_id}/filters` Fetches filters in a zone. You can filter the results using several optional parameters. ### Parameters - `params: FilterListParams` - `zone_id: string` Path param: Defines an identifier. - `id?: string` Query param: The unique identifier of the filter. - `description?: string` Query param: A case-insensitive string to find in the description. - `expression?: string` Query param: A case-insensitive string to find in the expression. - `page?: number` Query param: Page number of paginated results. - `paused?: boolean` Query param: When true, indicates that the filter is currently paused. - `per_page?: number` Query param: Number of filters per page. - `ref?: string` Query param: The filter ref (a short reference tag) to search for. Must be an exact match. ### Returns - `FirewallFilter` - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const firewallFilter of client.filters.list({ zone_id: '023e105f4ecef8ad9ca31a8372d0c353', })) { console.log(firewallFilter.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 `client.filters.get(stringfilterId, FilterGetParamsparams, RequestOptionsoptions?): FirewallFilter` **get** `/zones/{zone_id}/filters/{filter_id}` Fetches the details of a filter. ### Parameters - `filterId: string` The unique identifier of the filter. - `params: FilterGetParams` - `zone_id: string` Defines an identifier. ### Returns - `FirewallFilter` - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const firewallFilter = await client.filters.get('372e67954025e0ba6aaa6d586b9e0b61', { zone_id: '023e105f4ecef8ad9ca31a8372d0c353', }); console.log(firewallFilter.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 `client.filters.create(FilterCreateParamsparams, RequestOptionsoptions?): SinglePage` **post** `/zones/{zone_id}/filters` Creates one or more filters. ### Parameters - `params: FilterCreateParams` - `zone_id: string` Path param: Defines an identifier. - `body: Array` Body param - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Returns - `FirewallFilter` - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const firewallFilter of client.filters.create({ zone_id: '023e105f4ecef8ad9ca31a8372d0c353', body: [{}], })) { console.log(firewallFilter.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 `client.filters.update(stringfilterId, FilterUpdateParamsparams, RequestOptionsoptions?): FirewallFilter` **put** `/zones/{zone_id}/filters/{filter_id}` Updates an existing filter. ### Parameters - `filterId: string` The unique identifier of the filter. - `params: FilterUpdateParams` - `zone_id: string` Path param: Defines an identifier. - `description?: string` Body param: An informative summary of the filter. - `expression?: string` Body param: The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` Body param: When true, indicates that the filter is currently paused. - `ref?: string` Body param: A short reference tag. Allows you to select related filters. ### Returns - `FirewallFilter` - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const firewallFilter = await client.filters.update('372e67954025e0ba6aaa6d586b9e0b61', { zone_id: '023e105f4ecef8ad9ca31a8372d0c353', }); console.log(firewallFilter.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 `client.filters.delete(stringfilterId, FilterDeleteParamsparams, RequestOptionsoptions?): FilterDeleteResponse` **delete** `/zones/{zone_id}/filters/{filter_id}` Deletes an existing filter. ### Parameters - `filterId: string` The unique identifier of the filter. - `params: FilterDeleteParams` - `zone_id: string` Defines an identifier. ### Returns - `FilterDeleteResponse` - `id: string` The unique identifier of the filter. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const filter = await client.filters.delete('372e67954025e0ba6aaa6d586b9e0b61', { zone_id: '023e105f4ecef8ad9ca31a8372d0c353', }); console.log(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 `client.filters.bulkUpdate(FilterBulkUpdateParamsparams, RequestOptionsoptions?): SinglePage` **put** `/zones/{zone_id}/filters` Updates one or more existing filters. ### Parameters - `params: FilterBulkUpdateParams` - `zone_id: string` Path param: Defines an identifier. - `body: Array` Body param - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Returns - `FirewallFilter` - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const firewallFilter of client.filters.bulkUpdate({ zone_id: '023e105f4ecef8ad9ca31a8372d0c353', body: [{}], })) { console.log(firewallFilter.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 `client.filters.bulkDelete(FilterBulkDeleteParamsparams, RequestOptionsoptions?): FilterBulkDeleteResponse | null` **delete** `/zones/{zone_id}/filters` Deletes one or more existing filters. ### Parameters - `params: FilterBulkDeleteParams` - `zone_id: string` Path param: Defines an identifier. - `id: Array` Query param ### Returns - `FilterBulkDeleteResponse = Array | null` - `id?: string` The unique identifier of the filter. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.filters.bulkDelete({ zone_id: '023e105f4ecef8ad9ca31a8372d0c353', id: ['372e67954025e0ba6aaa6d586b9e0b61'], }); console.log(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 - `FirewallFilter` - `id?: string` The unique identifier of the filter. - `description?: string` An informative summary of the filter. - `expression?: string` The filter expression. For more information, refer to [Expressions](https://developers.cloudflare.com/ruleset-engine/rules-language/expressions/). - `paused?: boolean` When true, indicates that the filter is currently paused. - `ref?: string` A short reference tag. Allows you to select related filters. ### Filter Delete Response - `FilterDeleteResponse` - `id: string` The unique identifier of the filter. ### Filter Bulk Delete Response - `FilterBulkDeleteResponse = Array | null` - `id?: string` The unique identifier of the filter.