Create ruleset Creates a ruleset of a given kind in the specified phase. Allows you to create phase entry point rulesets.
Use one of the following API endpoints:
The following parameters are required:
Name Description Value Notes nameA human-readable name for the ruleset. String The name is immutable. You cannot change it over the lifetime of the ruleset. descriptionOptional description for the ruleset. String You can change the description over the lifetime of the ruleset. kindThe kind of ruleset the JSON object represents. String Allowed values:
custom: Creates a custom rulesetroot: Creates a phase entry point ruleset at the account levelzone: Creates a phase entry point ruleset at the zone levelphaseThe name of the phase where the ruleset will be created. String Check the specific Cloudflare product documentation for more information on the phases where you can create rulesets for that product.
Use the rules parameter to supply a list of rules for the ruleset. For an object definition, refer to Rulesets API: JSON Object .
Example - Create a custom ruleset The following example request creates a custom ruleset in the http_request_firewall_custom phase containing a single rule.Request curl https://api.cloudflare.com/client/v4/accounts/ { account_id } /rulesets \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Example custom ruleset",
"kind": "custom",
"description": "Example ruleset description",
"rules": [
{
"action": "log",
"expression": "cf.zone.name eq \"example.com\""
}
],
"phase": "http_request_firewall_custom"
}'
Response {
"result" : {
"id" : "<RULESET_ID>" ,
"name" : "Example custom ruleset" ,
"description" : "Example ruleset description" ,
"kind" : "custom" ,
"version" : "1" ,
"rules" : [
{
"id" : "<RULE_ID>" ,
"version" : "1" ,
"action" : "log" ,
"expression" : "cf.zone.name eq \"example.com\"" ,
"last_updated" : "2021-03-17T15:42:37.917815Z"
}
] ,
"last_updated" : "2021-03-17T15:42:37.917815Z" ,
"phase" : "http_request_firewall_custom"
} ,
"success" : true ,
"errors" : [ ] ,
"messages" : [ ]
}
Example - Create a zone-level phase entry point ruleset The following example request creates a zone-level phase entry point ruleset at the http_request_firewall_managed phase with a single rule that executes a managed ruleset.You do not have to use this method to create a phase entry point ruleset — Cloudflare automatically creates the entry point ruleset when you add a rule to it, if it does not exist. Refer to Add rules to phase entry point rulesets for more information.
Request curl https://api.cloudflare.com/client/v4/zones/ { zone_id } /rulesets \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Zone-level phase entry point",
"kind": "zone",
"description": "This ruleset executes a managed ruleset.",
"rules": [
{
"action": "execute",
"expression": "true",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>"
}
}
],
"phase": "http_request_firewall_managed"
}'
Response {
"result" : {
"id" : "<RULESET_ID>" ,
"name" : "Zone-level phase entry point" ,
"description" : "This ruleset executes a managed ruleset." ,
"kind" : "zone" ,
"version" : "1" ,
"rules" : [
{
"id" : "<RULE_ID>" ,
"version" : "1" ,
"action" : "execute" ,
"expression" : "true" ,
"action_parameters" : {
"id" : "<MANAGED_RULESET_ID>"
} ,
"last_updated" : "2021-03-17T15:42:37.917815Z"
}
] ,
"last_updated" : "2021-03-17T15:42:37.917815Z" ,
"phase" : "http_request_firewall_managed"
} ,
"success" : true ,
"errors" : [ ] ,
"messages" : [ ]
}