INTEGRITY Документация

Обновление правила в наборе правил

Применяет одно или несколько изменений к существующему правилу в наборе правил на уровне аккаунта или зоны.

Используйте одну из следующих конечных точек API:

Вы можете изменить определение правила, обновив его поля, либо изменить порядок правила в наборе правил. При вызове этого метода создаётся новая версия набора правил.

Обновление определения правила

Чтобы обновить определение правила, включите новое определение правила в тело запроса. Необходимо указать все поля правила, которые должны войти в новое определение, даже если их значения не меняются.

После обновления правила ответ будет включать полный набор правил.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Обновление правила набора правил аккаунта
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 объект в запросе, содержащий один из следующих элементов:

Чтобы изменить порядок правила без изменения его определения, укажите только 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-токена

Хотя бы одно из следующих права доступа токена требуется:
Обновление правила в наборе правил зоны
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-токена

Хотя бы одно из следующих права доступа токена требуется:
Обновление правила в наборе правил зоны
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-токена

Хотя бы одно из следующих права доступа токена требуется:
Обновление правила в наборе правил зоны
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>