← Cloudflare Ruleset Engine / ruleset-engine / rulesets-api
Přidání pravidla do sady pravidel
Přidá jediné pravidlo do stávající sady pravidel. Pomocí tohoto endpointu přidáte pravidlo, aniž byste museli do požadavku zahrnout všechna stávající pravidla sady.
Použijte jeden z následujících endpointů API:
- Vytvoření pravidla sady pravidel účtu
POST /accounts/{account_id}/rulesets/{ruleset_id}/rules - Vytvoření pravidla sady pravidel zóny
POST /zones/{zone_id}/rulesets/{ruleset_id}/rules
Definici pravidla uveďte v těle požadavku.
Pravidlo se ve výchozím nastavení přidá na konec stávajícího seznamu pravidel v sadě pravidel. Chcete-li pro pravidlo určit konkrétní pozici, zahrňte position objekt v těle požadavku podle pokynů v Změna pořadí pravidla v sadě pravidel.
Volání této metody vytvoří novou verzi rulesetu.
Příklad
Následující POST přidá pravidlo do sady pravidel $RULESET_ID zóny $ZONE_ID. ID rulesetu bylo předtím získáno pomocí Seznam sad pravidel zóny operace a odpovídá vstupní sadě pravidel pro http_request_firewall_custom fáze.
Odpověď bude obsahovat kompletní sadu pravidel po přidání pravidla.
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" \
--request POST \
--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": "Zone Ruleset 1",
"description": "My phase entry point ruleset at the zone level",
"kind": "zone",
"version": "11",
"rules": [
{
"id": "<RULE_ID_1>",
"version": "1",
"action": "challenge",
"expression": "not http.request.uri.path matches \"^/api/.*$\"",
"last_updated": "2023-11-23T11:36:24.192361Z",
"ref": "<RULE_REF_1>",
"enabled": true
},
{
"id": "<NEW_RULE_ID>",
"version": "1",
"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": "2024-06-22T12:35:58.144683Z",
"ref": "<NEW_RULE_REF>",
"enabled": true
}
],
"last_updated": "2024-06-22T12:35:58.144683Z",
"phase": "http_request_firewall_custom"
},
"success": true,
"errors": [],
"messages": []
}Definujte pozici pravidla v sadě pravidel
Chcete-li definovat pozici nového pravidla v sadě pravidel, 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.
Příklady použití position objekt, viz Aktualizace pravidla v sadě pravidel.