Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
182 changes: 87 additions & 95 deletions src/content/docs/cache/how-to/cache-rules/create-api.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ head:

---

import { Details } from "~/components"
import { Details, APIRequest } from "~/components"

Use the [Rulesets API](https://developers.cloudflare.com/ruleset-engine/rulesets-api/) to create a cache rule via API. To configure Cloudflare’s API refer to the [API documentation](/fundamentals/api/get-started/).

Expand Down Expand Up @@ -38,131 +38,123 @@ These examples are setting all the Cache Rules of a zone to a single rule, since

<Details header="Example: Cache everything for example.com">

```bash title="Request"
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(http.host eq \"example.com\")",
"description": "cache everything for example.com",
"action": "set_cache_settings",
"action_parameters": {
"cache": true
<APIRequest
path="/zones/{zone_id}/rulesets/{ruleset_id}"
method="PUT"
json={{
rules: [
{
expression: '(http.host eq "example.com")',
description: "cache everything for example.com",
action: "set_cache_settings",
action_parameters: {
cache: true
}
}
}
]
}'
```
]
}}
roles={false}
/>


</Details>


<Details header="Example: Extend read timeout for Android clients">

```bash title="Request"
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(http.user_agent contains \"Android\")",
"description": "extend read timeout for android clients",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"read_timeout": 300
<APIRequest
path="/zones/{zone_id}/rulesets/{ruleset_id}"
method="PUT"
json={{
rules: [
{
expression: '(http.user_agent contains "Android")',
description: "extend read timeout for android clients",
action: "set_cache_settings",
action_parameters: {
cache: true,
read_timeout: 300
}
}
}
]
}'
```

]
}}
roles={false}
/>

</Details>


<Details header="Example: Disable Cache Reserve for frequently updated assets">

```bash title="Request"
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(starts_with(http.request.uri, \"/feed/\"))",
"description": "disable cache reserve for frequently updated assets",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"cache_reserve": {
"enabled": false
<APIRequest
path="/zones/{zone_id}/rulesets/{ruleset_id}"
method="PUT"
json={{
rules: [
{
expression: '(starts_with(http.request.uri, "/feed/"))',
description: "disable cache reserve for frequently updated assets",
action: "set_cache_settings",
action_parameters: {
cache: true,
cache_reserve: {
enabled: false
}
}
}
}
]
}'
```

]
}}
roles={false}
/>

</Details>


<Details header="Example: Turn off default cache TTLs">

```bash title="Request"
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"rules": [
{
"expression": "(http.host eq \"example.com\")",
"description": "turn off default cache ttls",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"edge_ttl": {
"mode": "bypass_by_default"
<APIRequest
path="/zones/{zone_id}/rulesets/{ruleset_id}"
method="PUT"
json={{
rules: [
{
expression: '(http.host eq "example.com")',
description: "turn off default cache ttls",
action: "set_cache_settings",
action_parameters: {
cache: true,
edge_ttl: {
mode: "bypass_by_default"
}
}
}
}
]
}'
```

]
}}
roles={false}
/>

</Details>


<Details header="Example: Update the position of an existing rule">

```bash title="Request"
curl --request PATCH \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"expression": "(http.host eq \"example.com\")",
"description": "cache everything for example.com",
"action": "set_cache_settings",
"action_parameters": {
"cache": true
}
"enabled": true,
"position": {
"before": "da5e8e506c8e7877fe06cdf4c41add54"
}
}'
```
<APIRequest
path="/zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id}"
method="PATCH"
json={{
expression: '(http.host eq "example.com")',
description: "cache everything for example.com",
action: "set_cache_settings",
action_parameters: {
cache: true
},
enabled: true,
position: {
before: "da5e8e506c8e7877fe06cdf4c41add54"
}
}}
roles={false}
/>


</Details>
Expand Down