カスタムルールセットにルールを追加する
既存のカスタムルールセットにルールを追加するには、アカウントルールセットの更新操作を使用し、ルールを配列で渡します。各ルールには、式とアクションがあります。
以下のリクエストは、カスタムルールセットに2つのルールを追加します。これらはルールセット内の唯一の2つのルールになります。
curl --request PUT \https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/{custom_ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(ip.geoip.country eq \"GB\" or ip.geoip.country eq \"FR\") or cf.threat_score > 0", "action": "challenge", "description": "GBおよびFRに対するチャレンジまたはIPの評判に基づく" }, { "expression": "not http.request.uri.path matches \"^/api/.*$\"", "action": "challenge", "description": "/api以外に対するチャレンジ" } ]}'レスポンスには、新しいルールのルールIDがidフィールドに含まれます:
{ "result": { "id": "<CUSTOM_RULESET_ID>", "name": "カスタムルールセット 1", "kind": "custom", "version": "2", "rules": [ { "id": "<CUSTOM_RULE_ID_1>", "version": "1", "action": "challenge", "expression": "(ip.geoip.country eq \"GB\" or ip.geoip.country eq \"FR\") or cf.threat_score \u003e 0", "description": "GBおよびFRに対するチャレンジまたはIPの評判に基づく", "last_updated": "2021-03-18T18:25:08.122758Z", "ref": "<CUSTOM_RULE_REF_1>", "enabled": true }, { "id": "<CUSTOM_RULE_ID_2>", "version": "1", "action": "challenge", "expression": "not http.request.uri.path matches \"^/api/.*$\"", "description": "/api以外に対するチャレンジ", "last_updated": "2021-03-18T18:25:08.122758Z", "ref": "<CUSTOM_RULE_REF_2>", "enabled": true } ], "last_updated": "2021-03-18T18:25:08.122758Z", "phase": "http_request_firewall_custom" }, "success": true, "errors": [], "messages": []}カスタムルールセット内の1つまたは複数のルールを更新するには、アカウントルールセットの更新操作を使用します。変更したいルールのIDをルール配列に含め、更新したいフィールドを追加します。リクエストは、ルールセット全体を新しいバージョンで置き換えます。したがって、保持したいすべてのルールのIDを含める必要があります。
以下のリクエストは、カスタムルールセット内の1つのルールを編集し、ルールの実行順序を更新します。
curl --request PUT \https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "id": "<CUSTOM_RULE_ID_2>", "expression": "not http.request.uri.path matches \"^/api/.*$\"", "action": "js_challenge", "description": "/api以外に対するjs_challenge" }, { "id": "<CUSTOM_RULE_ID_1>" } ]}'レスポンスは、修正されたカスタムルールセットを返します。更新されたルールとルールセットのバージョン番号が増加していることに注意してください。
{ "result": { "id": "<CUSTOM_RULESET_ID>", "name": "カスタムルールセット 1", "kind": "custom", "version": "3", "rules": [ { "id": "<CUSTOM_RULE_ID_2>", "version": "2", "action": "js_challenge", "expression": "not http.request.uri.path matches \"^/api/.*$\"", "description": "/api以外に対するjs_challenge", "last_updated": "2021-03-18T18:30:08.122758Z", "ref": "<CUSTOM_RULE_ID_2>", "enabled": true }, { "id": "<CUSTOM_RULE_ID_1>", "version": "1", "action": "challenge", "expression": "(ip.geoip.country eq \"GB\" or ip.geoip.country eq \"FR\") or cf.threat_score \u003e 0", "description": "GBおよびFRに対するチャレンジまたはIPの評判に基づく", "last_updated": "2021-03-18T18:25:08.122758Z", "ref": "<CUSTOM_RULE_ID_1>", "enabled": true } ], "last_updated": "2021-03-18T18:30:08.122758Z", "phase": "http_request_firewall_custom" }, "success": true, "errors": [], "messages": []}上記のリクエストは、ルールセット内のルールのリストを完全に置き換えます。rules配列から既存のルールを省略すると、新しいバージョンのルールセットには表示されません。