← Cloudflare Ruleset Engine / ruleset-engine / rulesets-api
Обновление правила в наборе правил
Применяет одно или несколько изменений к существующему правилу в наборе правил на уровне аккаунта или зоны.
Используйте одну из следующих конечных точек API:
- Обновление правила набора правил аккаунта
PATCH /accounts/{account_id}/rulesets/{ruleset_id}/rules/{rule_id} - Обновление правила в наборе правил зоны
PATCH /zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id}
Вы можете изменить определение правила, обновив его поля, либо изменить порядок правила в наборе правил. При вызове этого метода создаётся новая версия набора правил.
Обновление определения правила
Чтобы обновить определение правила, включите новое определение правила в тело запроса. Необходимо указать все поля правила, которые должны войти в новое определение, даже если их значения не меняются.
После обновления правила ответ будет включать полный набор правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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": []
}Изменение порядка правила в наборе правил
Чтобы изменить порядок правила в списке правил набора, укажите position объект в запросе, содержащий один из следующих элементов:
-
"before": "<RULE_ID>": помещает правило перед правилом<RULE_ID>. Используйте этот аргумент с пустым значением ID правила (""), чтобы сделать правило первым в наборе правил. -
"after": "<RULE_ID>": помещает правило после правила<RULE_ID>. Используйте этот аргумент с пустым значением ID правила (""), чтобы сделать правило последним в наборе правил. -
"index": <POSITION_NUMBER>: помещает правило точно в позицию, заданную целым числом<POSITION_NUMBER>. Нумерация позиций начинается с1. Существующие правила в наборе правил, начиная с указанного номера позиции, сдвигаются на одну позицию (ни одно правило не перезаписывается). Например, если поместить правило в позицию n с помощьюindex, существующие правила с индексом n, n+1, n+2 и так далее, сдвигаются на одну позицию: их новая позиция будет n+1, n+2, n+3, и так далее. Если индекс выходит за пределы диапазона, метод возвращает400код статуса HTTP.
Чтобы изменить порядок правила без изменения его определения, укажите только position объект в PATCH запроса. Определение правила также можно обновить и изменить его порядок в том же PATCH запросе, указав как rule объект и position объект.
Примеры
Следующие примеры основаны на приведённом ниже (сокращённом) наборе правил:
{
"rules": [
{ "id": "<RULE_ID_1>" },
{ "id": "<RULE_ID_2>" },
{ "id": "<RULE_ID_3>" },
{ "id": "<RULE_ID_4>" }
]
}Пример 1
Следующий запрос с position объект помещает правило $RULE_ID_2 в качестве первого правила:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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": ""
}
}'В этом случае новый порядок правил будет таким:
<RULE_ID_2>, <RULE_ID_1>, <RULE_ID_3>, <RULE_ID_4>
Пример 2
Следующий запрос с position объект помещает правило $RULE_ID_2 после правила 3:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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>"
}
}'В этом случае новый порядок правил будет таким:
<RULE_ID_1>, <RULE_ID_3>, <RULE_ID_2>, <RULE_ID_4>
Пример 3
Следующий запрос с position объект помещает правило $RULE_ID_1 на позицию 3, становясь третьим правилом в наборе правил:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется: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
}
}'В этом случае новый порядок правил будет таким:
<RULE_ID_2>, <RULE_ID_3>, <RULE_ID_1>, <RULE_ID_4>