# Policies ## List Page Shield policies `page_shield.policies.list(PolicyListParams**kwargs) -> SyncSinglePage[PolicyListResponse]` **get** `/zones/{zone_id}/page_shield/policies` Lists all Page Shield policies. ### Parameters - `zone_id: str` Identifier ### Returns - `class PolicyListResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.page_shield.policies.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.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';" } ], "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 `page_shield.policies.get(strpolicy_id, PolicyGetParams**kwargs) -> PolicyGetResponse` **get** `/zones/{zone_id}/page_shield/policies/{policy_id}` Fetches a Page Shield policy by ID. ### Parameters - `zone_id: str` Identifier - `policy_id: str` Identifier ### Returns - `class PolicyGetResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) policy = client.page_shield.policies.get( policy_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(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 `page_shield.policies.create(PolicyCreateParams**kwargs) -> PolicyCreateResponse` **post** `/zones/{zone_id}/page_shield/policies` Create a Page Shield policy. ### Parameters - `zone_id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Returns - `class PolicyCreateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) policy = client.page_shield.policies.create( zone_id="023e105f4ecef8ad9ca31a8372d0c353", action="allow", description="Checkout page CSP policy", enabled=True, expression="ends_with(http.request.uri.path, \"/checkout\")", value="script-src 'none';", ) print(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 `page_shield.policies.update(strpolicy_id, PolicyUpdateParams**kwargs) -> PolicyUpdateResponse` **put** `/zones/{zone_id}/page_shield/policies/{policy_id}` Update a Page Shield policy by ID. ### Parameters - `zone_id: str` Identifier - `policy_id: str` Identifier - `action: Optional[Literal["allow", "log", "add_reporting_directives"]]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: Optional[str]` A description for the policy - `enabled: Optional[bool]` Whether the policy is enabled - `expression: Optional[str]` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: Optional[str]` The policy which will be applied ### Returns - `class PolicyUpdateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) policy = client.page_shield.policies.update( policy_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(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 `page_shield.policies.delete(strpolicy_id, PolicyDeleteParams**kwargs)` **delete** `/zones/{zone_id}/page_shield/policies/{policy_id}` Delete a Page Shield policy by ID. ### Parameters - `zone_id: str` Identifier - `policy_id: str` Identifier ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) client.page_shield.policies.delete( policy_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) ``` ## Domain Types ### Policy - `class Policy: …` - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy List Response - `class PolicyListResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy Get Response - `class PolicyGetResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy Create Response - `class PolicyCreateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy Update Response - `class PolicyUpdateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied