# Policies ## List Page Shield policies `client.PageShield.Policies.List(ctx, query) (*SinglePage[PolicyListResponse], error)` **get** `/zones/{zone_id}/page_shield/policies` Lists all Page Shield policies. ### Parameters - `query PolicyListParams` - `ZoneID param.Field[string]` Identifier ### Returns - `type PolicyListResponse struct{…}` - `ID string` Identifier - `Action PolicyListResponseAction` The action to take if the expression matches - `const PolicyListResponseActionAllow PolicyListResponseAction = "allow"` - `const PolicyListResponseActionLog PolicyListResponseAction = "log"` - `const PolicyListResponseActionAddReportingDirectives PolicyListResponseAction = "add_reporting_directives"` - `Description string` A description for the policy - `Enabled bool` Whether the policy is enabled - `Expression string` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `Value string` The policy which will be applied ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/page_shield" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) page, err := client.PageShield.Policies.List(context.TODO(), page_shield.PolicyListParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "result": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Get a Page Shield policy `client.PageShield.Policies.Get(ctx, policyID, query) (*PolicyGetResponse, error)` **get** `/zones/{zone_id}/page_shield/policies/{policy_id}` Fetches a Page Shield policy by ID. ### Parameters - `policyID string` Identifier - `query PolicyGetParams` - `ZoneID param.Field[string]` Identifier ### Returns - `type PolicyGetResponse struct{…}` - `ID string` Identifier - `Action PolicyGetResponseAction` The action to take if the expression matches - `const PolicyGetResponseActionAllow PolicyGetResponseAction = "allow"` - `const PolicyGetResponseActionLog PolicyGetResponseAction = "log"` - `const PolicyGetResponseActionAddReportingDirectives PolicyGetResponseAction = "add_reporting_directives"` - `Description string` A description for the policy - `Enabled bool` Whether the policy is enabled - `Expression string` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `Value string` The policy which will be applied ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/page_shield" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) policy, err := client.PageShield.Policies.Get( context.TODO(), "023e105f4ecef8ad9ca31a8372d0c353", page_shield.PolicyGetParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", policy.ID) } ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Create a Page Shield policy `client.PageShield.Policies.New(ctx, params) (*PolicyNewResponse, error)` **post** `/zones/{zone_id}/page_shield/policies` Create a Page Shield policy. ### Parameters - `params PolicyNewParams` - `ZoneID param.Field[string]` Path param: Identifier - `Policy param.Field[Policy]` Body param ### Returns - `type PolicyNewResponse struct{…}` - `ID string` Identifier - `Action PolicyNewResponseAction` The action to take if the expression matches - `const PolicyNewResponseActionAllow PolicyNewResponseAction = "allow"` - `const PolicyNewResponseActionLog PolicyNewResponseAction = "log"` - `const PolicyNewResponseActionAddReportingDirectives PolicyNewResponseAction = "add_reporting_directives"` - `Description string` A description for the policy - `Enabled bool` Whether the policy is enabled - `Expression string` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `Value string` The policy which will be applied ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/page_shield" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) policy, err := client.PageShield.Policies.New(context.TODO(), page_shield.PolicyNewParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Policy: page_shield.PolicyParam{ Action: cloudflare.F(page_shield.PolicyActionAllow), Description: cloudflare.F("Checkout page CSP policy"), Enabled: cloudflare.F(true), Expression: cloudflare.F(`ends_with(http.request.uri.path, "/checkout")`), Value: cloudflare.F("script-src 'none';"), }, }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", policy.ID) } ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Update a Page Shield policy `client.PageShield.Policies.Update(ctx, policyID, params) (*PolicyUpdateResponse, error)` **put** `/zones/{zone_id}/page_shield/policies/{policy_id}` Update a Page Shield policy by ID. ### Parameters - `policyID string` Identifier - `params PolicyUpdateParams` - `ZoneID param.Field[string]` Path param: Identifier - `Action param.Field[PolicyUpdateParamsAction]` Body param: The action to take if the expression matches - `const PolicyUpdateParamsActionAllow PolicyUpdateParamsAction = "allow"` - `const PolicyUpdateParamsActionLog PolicyUpdateParamsAction = "log"` - `const PolicyUpdateParamsActionAddReportingDirectives PolicyUpdateParamsAction = "add_reporting_directives"` - `Description param.Field[string]` Body param: A description for the policy - `Enabled param.Field[bool]` Body param: Whether the policy is enabled - `Expression param.Field[string]` Body param: The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `Value param.Field[string]` Body param: The policy which will be applied ### Returns - `type PolicyUpdateResponse struct{…}` - `ID string` Identifier - `Action PolicyUpdateResponseAction` The action to take if the expression matches - `const PolicyUpdateResponseActionAllow PolicyUpdateResponseAction = "allow"` - `const PolicyUpdateResponseActionLog PolicyUpdateResponseAction = "log"` - `const PolicyUpdateResponseActionAddReportingDirectives PolicyUpdateResponseAction = "add_reporting_directives"` - `Description string` A description for the policy - `Enabled bool` Whether the policy is enabled - `Expression string` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `Value string` The policy which will be applied ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/page_shield" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) policy, err := client.PageShield.Policies.Update( context.TODO(), "023e105f4ecef8ad9ca31a8372d0c353", page_shield.PolicyUpdateParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", policy.ID) } ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Delete a Page Shield policy `client.PageShield.Policies.Delete(ctx, policyID, body) error` **delete** `/zones/{zone_id}/page_shield/policies/{policy_id}` Delete a Page Shield policy by ID. ### Parameters - `policyID string` Identifier - `body PolicyDeleteParams` - `ZoneID param.Field[string]` Identifier ### Example ```go package main import ( "context" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/page_shield" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) err := client.PageShield.Policies.Delete( context.TODO(), "023e105f4ecef8ad9ca31a8372d0c353", page_shield.PolicyDeleteParams{ ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } } ``` ## Domain Types ### Policy - `type Policy struct{…}` - `Action PolicyAction` The action to take if the expression matches - `const PolicyActionAllow PolicyAction = "allow"` - `const PolicyActionLog PolicyAction = "log"` - `const PolicyActionAddReportingDirectives PolicyAction = "add_reporting_directives"` - `Description string` A description for the policy - `Enabled bool` Whether the policy is enabled - `Expression string` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `Value string` The policy which will be applied