← Cloudflare Ruleset Engine / ruleset-engine / rulesets-api
Aktualizace pravidla v sadě pravidel
Použije jednu nebo více změn na stávající pravidlo v sadě pravidel na úrovni účtu nebo zóny.
Použijte jeden z následujících endpointů API:
- Aktualizace pravidla sady pravidel účtu
PATCH /accounts/{account_id}/rulesets/{ruleset_id}/rules/{rule_id} - Aktualizace pravidla v sadě pravidel zóny
PATCH /zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id}
Můžete aktualizovat definici pravidla změnou jeho polí nebo změnit pořadí pravidla v sadě pravidel. Volání této metody vytvoří novou verzi sady pravidel.
Aktualizace definice pravidla
Chcete-li aktualizovat definici pravidla, zahrňte novou definici pravidla do těla požadavku. Musíte uvést všechna pole pravidla, která mají být součástí nové definice pravidla, i v případě, že jejich hodnoty neměníte.
Odpověď bude po aktualizaci pravidla obsahovat kompletní sadu pravidel.
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Mass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteTransform Rules WriteSelect Configuration WriteAccount WAF WriteAccount Rulesets WriteLogs Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID/rules/$RULE_ID_1" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"action": "js_challenge",
"expression": "(ip.src.country in {\"GB\" \"FR\"} and cf.bot_management.score < 20 and not cf.bot_management.verified_bot)",
"description": "challenge GB and FR based on bot score"
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Custom Ruleset 1",
"description": "My first custom ruleset",
"kind": "custom",
"version": "11",
"rules": [
{
"id": "<RULE_ID_1>",
"version": "2",
"action": "js_challenge",
"expression": "(ip.src.country in {\"GB\" \"FR\"} and cf.bot_management.score < 20 and not cf.bot_management.verified_bot)",
"description": "challenge GB and FR based on bot score",
"last_updated": "2023-03-22T12:54:58.144683Z",
"ref": "<RULE_REF_1>",
"enabled": true
},
{
"id": "<RULE_ID_2>",
"version": "1",
"action": "challenge",
"expression": "not http.request.uri.path matches \"^/api/.*$\"",
"last_updated": "2022-11-23T11:36:24.192361Z",
"ref": "<RULE_REF_2>",
"enabled": true
}
],
"last_updated": "2023-03-22T12:54:58.144683Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}Změna pořadí pravidla v sadě pravidel
Chcete-li změnit pořadí pravidla v seznamu pravidel rulesetu, zahrňte position objekt v požadavku, který obsahuje jedno z následujících:
-
"before": "<RULE_ID>": Umístí pravidlo před pravidlo<RULE_ID>. Tento argument použijte s prázdnou hodnotou ID pravidla ("") a nastavte pravidlo jako první pravidlo v sadě pravidel. -
"after": "<RULE_ID>": Umístí pravidlo za pravidlo<RULE_ID>. Tento argument použijte s prázdnou hodnotou ID pravidla ("") a nastavte pravidlo jako poslední pravidlo v sadě pravidel. -
"index": <POSITION_NUMBER>: Umístí pravidlo přesně na pozici určenou celým číslem<POSITION_NUMBER>. Čísla pozic začínají1. Existující pravidla v rulesetu od zadaného čísla pozice dále se posunou o jednu pozici (žádné pravidlo se nepřepíše). Pokud například umístíte pravidlo na pozici n pomocíindex, existující pravidla s indexem n, n+1, n+2 a tak dále, se posunou o jednu pozici, jejich nová pozice bude n+1, n+2, n+3 a tak dále. Pokud je index mimo rozsah, metoda vrátí hodnotu400stavový kód HTTP.
Změna pořadí pravidla bez úpravy jeho definice zahrnutím pouze position objekt v PATCH těla požadavku. Definici pravidla můžete zároveň aktualizovat a změnit její pořadí ve stejném PATCH požadavku zahrnutím obou rule objekt a position objekt.
Příklady
Následující příklady vycházejí z této (zkrácené) sady pravidel:
{
"rules": [
{ "id": "<RULE_ID_1>" },
{ "id": "<RULE_ID_2>" },
{ "id": "<RULE_ID_3>" },
{ "id": "<RULE_ID_4>" }
]
}Příklad 1
Následující požadavek s position objekt umístí pravidlo $RULE_ID_2 jako první pravidlo:
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID_2" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"position": {
"before": ""
}
}'V takovém případě by nové pořadí pravidel bylo:
<RULE_ID_2>, <RULE_ID_1>, <RULE_ID_3>, <RULE_ID_4>
Příklad 2
Následující požadavek s position objekt umístí pravidlo $RULE_ID_2 za pravidlem 3:
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID_2" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"position": {
"after": "<RULE_ID_3>"
}
}'V takovém případě by nové pořadí pravidel bylo:
<RULE_ID_1>, <RULE_ID_3>, <RULE_ID_2>, <RULE_ID_4>
Příklad 3
Následující požadavek s position objekt umístí pravidlo $RULE_ID_1 na pozici 3, čímž se stane třetím pravidlem v sadě pravidel:
Požadovaná oprávnění API tokenu
Alespoň jeden z následujících oprávnění tokenu je povinné:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID_1" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"position": {
"index": 3
}
}'V takovém případě by nové pořadí pravidel bylo:
<RULE_ID_2>, <RULE_ID_3>, <RULE_ID_1>, <RULE_ID_4>