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

Создайте Bulk Redirects через API

Чтобы создать Bulk Redirects через API, необходимо:

  1. Создайте Bulk Redirect List через API.
  2. Добавьте элементы (URL-редиректы) в список, созданный на шаге 1.
  3. Создайте Bulk Redirect Rule через API, чтобы включить список, созданный на шаге 1.

1. Создайте Bulk Redirect List через API

Используйте Создайте список операцию, чтобы создать новый Bulk Redirect List. Список kind должен быть redirect.

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

Хотя бы одно из следующих права доступа токена требуется:
Создайте список
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rules/lists" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "my_redirect_list",
		"description": "My redirect list.",
		"kind": "redirect"
	}'
{
	"result": {
		"id": "f848b6ccb07647749411f504d6f88794",
		"name": "my_redirect_list",
		"description": "My redirect list.",
		"kind": "redirect",
		"num_items": 0,
		"num_referencing_filters": 0,
		"created_on": "2021-10-28T09:11:42Z",
		"modified_on": "2021-10-28T09:11:42Z"
	},
	"success": true,
	"errors": [],
	"messages": []
}

Запишите ID списка, он понадобится вам на следующем шаге.

Сведения об операциях со списками см. в Lists API документация.

2. Добавление элементов в список

Используйте Создание элементов списка операцию, чтобы добавить элементы перенаправления URL в список. Введите ID списка из предыдущего шага в URL-адресе конечной точки:

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

Хотя бы одно из следующих права доступа токена требуется:
Создание элементов списка
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rules/lists/f848b6ccb07647749411f504d6f88794/items" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '[
		{
				"redirect": {
						"source_url": "example.com/blog/",
						"target_url": "https://example.com/blog/latest"
				}
		},
		{
				"redirect": {
						"source_url": "example.net/",
						"target_url": "https://example.net/under-construction.html",
						"status_code": 307
				}
		}
	]'
{
	"result": {
		"operation_id": "92558f8b296d4dbe9d0419e0e53f6622"
	},
	"success": true,
	"errors": [],
	"messages": []
}

Это асинхронная операция. Ответ будет содержать operation_id который вы будете использовать для проверки успешного завершения операции с помощью Получение статуса массовой операции операцию:

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

Хотя бы одно из следующих права доступа токена требуется:
Получение статуса массовой операции
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rules/lists/bulk_operations/92558f8b296d4dbe9d0419e0e53f6622" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

После успешного завершения операции ответ будет выглядеть примерно так:

Ответ
{
	"result": {
		"id": "92558f8b296d4dbe9d0419e0e53f6622",
		"status": "completed",
		"completed": "2021-10-28T09:15:42Z"
	},
	"success": true,
	"errors": [],
	"messages": []
}

3. Создание Bulk Redirect Rule через API

Bulk Redirect Lists представляют собой контейнеры для перенаправлений URL, поэтому, чтобы включить перенаправления из списка, нужно создать Bulk Redirect Rule.

Добавьте Bulk Redirect Rules в ruleset точки входа из http_request_redirect фаза на уровне аккаунта. См. Rulesets API документацию, чтобы узнать больше о создание ruleset и указав список правил для набора правил.

Bulk Redirect Rule должно содержать:

Следующий запрос Создайте account ruleset создаёт входной набор правил фазы для http_request_redirect фаза на уровне аккаунта, определяющая одно правило перенаправления. Используйте эту операцию, если вы ещё не создали набор правил точки входа для фазы http_request_redirect фазу ещё не создали.

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

Хотя бы одно из следующих права доступа токена требуется:
Создайте account ruleset
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "My redirect ruleset",
		"kind": "root",
		"phase": "http_request_redirect",
		"rules": [
				{
						"ref": "enable_my_redirect_list",
						"expression": "http.request.full_uri in $my_redirect_list",
						"description": "Bulk Redirect rule.",
						"action": "redirect",
						"action_parameters": {
								"from_list": {
										"name": "my_redirect_list",
										"key": "http.request.full_uri"
								}
						}
				}
		]
	}'
{
	"result": {
		"id": "528f4f03bf0da53a29907199625867be",
		"name": "My redirect ruleset",
		"kind": "root",
		"version": "1",
		"rules": [
			{
				"ref": "enable_my_redirect_list",
				"id": "8da312df846b4258a05bcd454ea943be",
				"version": "1",
				"expression": "http.request.full_uri in $my_redirect_list",
				"description": "Bulk Redirect rule.",
				"action": "redirect",
				"action_parameters": {
					"from_list": {
						"name": "my_redirect_list",
						"key": "http.request.full_uri"
					}
				},
				"last_updated": "2021-10-28T09:20:42Z"
			}
		],
		"last_updated": "2021-10-28T09:20:42Z",
		"phase": "http_request_redirect"
	},
	"success": true,
	"errors": [],
	"messages": []
}

Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.

Если для фазы уже есть entry point ruleset для http_request_redirect фазы используйте Обновление account ruleset операцию, как показано в следующем примере:

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

Хотя бы одно из следующих права доступа токена требуется:
Обновление account ruleset
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "My redirect ruleset",
		"kind": "root",
		"phase": "http_request_redirect",
		"rules": [
				{
						"ref": "eval_redirects_list_1",
						"expression": "http.request.full_uri in $my_redirect_list_1",
						"description": "Bulk Redirect rule 1",
						"action": "redirect",
						"action_parameters": {
								"from_list": {
										"name": "my_redirect_list_1",
										"key": "http.request.full_uri"
								}
						}
				},
				{
						"ref": "eval_redirects_list_2",
						"expression": "http.request.full_uri in $my_redirect_list_2",
						"description": "Bulk Redirect rule 2",
						"action": "redirect",
						"action_parameters": {
								"from_list": {
										"name": "my_redirect_list_2",
										"key": "http.request.full_uri"
								}
						}
				}
		]
	}'
{
	"result": {
		"id": "67013aa153df4e5fbda92f92bc979331",
		"name": "default",
		"description": "",
		"kind": "root",
		"version": "2",
		"rules": [
			{
				"ref": "eval_redirects_list_1",
				"id": "8be62ab2ef9a4a41af30c24ff8e73e41",
				"version": "1",
				"action": "redirect",
				"action_parameters": {
					"from_list": {
						"name": "my_redirect_list_1",
						"key": "http.request.full_uri"
					}
				},
				"expression": "http.request.full_uri in $my_redirect_list_1",
				"description": "Bulk Redirect rule 1",
				"last_updated": "2021-12-03T15:38:51.658387Z",
				"ref": "8be62ab2ef9a4a41af30c24ff8e73e41",
				"enabled": true
			},
			{
				"ref": "eval_redirects_list_2",
				"id": "97e38797fb2b4b22a4919800f1318a5c",
				"version": "1",
				"action": "redirect",
				"action_parameters": {
					"from_list": {
						"name": "my_redirect_list_2",
						"key": "http.request.full_uri"
					}
				},
				"expression": "http.request.full_uri in $my_redirect_list_2",
				"description": "Bulk Redirect rule 2",
				"last_updated": "2021-12-03T15:38:51.658387Z",
				"ref": "97e38797fb2b4b22a4919800f1318a5c",
				"enabled": true
			}
		],
		"last_updated": "2021-12-03T15:38:51.658387Z",
		"phase": "http_request_redirect"
	},
	"success": true,
	"errors": [],
	"messages": []
}

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

Токен API, используемый в запросах API для управления объектами Bulk Redirects (списками, элементами списков и правилами), должен иметь как минимум следующие разрешения:

  • Аккаунт > Bulk URL Redirects > Изменить
  • Аккаунт > Account Filter Lists > Изменить
  • Mass URL Redirects Write
  • Account Rule Lists Write