# Filters ## List filters `client.Filters.List(ctx, params) (*V4PagePaginationArray[FirewallFilter], error)` **get** `/zones/{zone_id}/filters` Fetches filters in a zone. You can filter the results using several optional parameters. ### Parameters - `params FilterListParams` - `ZoneID param.Field[string]` Path param: Defines an identifier. - `ID param.Field[string]` Query param: The unique identifier of the filter. - `Description param.Field[string]` Query param: A case-insensitive string to find in the description. - `Expression param.Field[string]` Query param: A case-insensitive string to find in the expression. - `Page param.Field[float64]` Query param: Page number of paginated results. - `Paused param.Field[bool]` Query param: When true, indicates that the filter is currently paused. - `PerPage param.Field[float64]` Query param: Number of filters per page. - `Ref param.Field[string]` Query param: The filter ref (a short reference tag) to search for. Must be an exact match. ### Returns - `type FirewallFilter struct{…}` - `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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/filters" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Filters.List(context.TODO(), filters.FilterListParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### 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(ctx, filterID, query) (*FirewallFilter, error)` **get** `/zones/{zone_id}/filters/{filter_id}` Fetches the details of a filter. ### Parameters - `filterID string` The unique identifier of the filter. - `query FilterGetParams` - `ZoneID param.Field[string]` Defines an identifier. ### Returns - `type FirewallFilter struct{…}` - `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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/filters" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) firewallFilter, err := client.Filters.Get( context.TODO(), "372e67954025e0ba6aaa6d586b9e0b61", filters.FilterGetParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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.New(ctx, params) (*SinglePage[FirewallFilter], error)` **post** `/zones/{zone_id}/filters` Creates one or more filters. ### Parameters - `params FilterNewParams` - `ZoneID param.Field[string]` Path param: Defines an identifier. - `Body param.Field[[]FirewallFilter]` 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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters. ### Returns - `type FirewallFilter struct{…}` - `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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/filters" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Filters.New(context.TODO(), filters.FilterNewParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Body: []filters.FirewallFilterParam{filters.FirewallFilterParam{ }}, }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### 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(ctx, filterID, params) (*FirewallFilter, error)` **put** `/zones/{zone_id}/filters/{filter_id}` Updates an existing filter. ### Parameters - `filterID string` The unique identifier of the filter. - `params FilterUpdateParams` - `ZoneID param.Field[string]` Path param: Defines an identifier. - `FirewallFilter param.Field[FirewallFilter]` Body param ### Returns - `type FirewallFilter struct{…}` - `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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/filters" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) firewallFilter, err := client.Filters.Update( context.TODO(), "372e67954025e0ba6aaa6d586b9e0b61", filters.FilterUpdateParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), FirewallFilter: filters.FirewallFilterParam{ }, }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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(ctx, filterID, body) (*FilterDeleteResponse, error)` **delete** `/zones/{zone_id}/filters/{filter_id}` Deletes an existing filter. ### Parameters - `filterID string` The unique identifier of the filter. - `body FilterDeleteParams` - `ZoneID param.Field[string]` Defines an identifier. ### Returns - `type FilterDeleteResponse struct{…}` - `ID string` The unique identifier of the filter. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/filters" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) filter, err := client.Filters.Delete( context.TODO(), "372e67954025e0ba6aaa6d586b9e0b61", filters.FilterDeleteParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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(ctx, params) (*SinglePage[FirewallFilter], error)` **put** `/zones/{zone_id}/filters` Updates one or more existing filters. ### Parameters - `params FilterBulkUpdateParams` - `ZoneID param.Field[string]` Path param: Defines an identifier. - `Body param.Field[[]FilterBulkUpdateParamsBody]` 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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters. ### Returns - `type FirewallFilter struct{…}` - `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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/filters" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Filters.BulkUpdate(context.TODO(), filters.FilterBulkUpdateParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Body: []filters.FilterBulkUpdateParamsBody{filters.FilterBulkUpdateParamsBody{ }}, }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### 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(ctx, params) (*[]FilterBulkDeleteResponse, error)` **delete** `/zones/{zone_id}/filters` Deletes one or more existing filters. ### Parameters - `params FilterBulkDeleteParams` - `ZoneID param.Field[string]` Path param: Defines an identifier. - `ID param.Field[[]string]` Query param ### Returns - `type FilterBulkDeleteResponseEnvelopeResult []FilterBulkDeleteResponse` - `ID string` The unique identifier of the filter. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/filters" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Filters.BulkDelete(context.TODO(), filters.FilterBulkDeleteParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), ID: cloudflare.F([]string{"372e67954025e0ba6aaa6d586b9e0b61"}), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", 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 - `type FirewallFilter struct{…}` - `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 bool` When true, indicates that the filter is currently paused. - `Ref string` A short reference tag. Allows you to select related filters.