ドキュメント本文へスキップ
API

ルールをテストする

このルールが最近のメッセージのどれを捕まえていたかを返します。何も変更しません。

POSTapi.openemail.uk/rules/{id}/test

実際の呼び出しを、ご自身のキーで自分のワークスペースに対して実行します。

POST /rules/{id}/test

このルールが最近のメッセージのどれを捕まえていたかを返します。何も変更しません。

rules:read が必要です。ドライランはメールボックスを読むだけで何も書かないので、rules:write の操作ではありません。days の既定値は 30 で最大 365、limit の既定値は 50 で最大 200 です。threadIds を指定すると、期間ではなく指定したスレッドをテストします。

curl
curl -X POST "$OE/rules/rul_7f3a1c94e05d3862c1f0a44b/test" -H "$AUTH" \  -H "Content-Type: application/json" \  -d '{ "days": 30, "limit": 50 }'
レスポンス
{  "object": "rule_test",  "ruleId": "rul_7f3a1c94e05d3862c1f0a44b",  "scanned": 50,  "matched": 3,  "wouldApply": ["label:USER_RECEIPTS", "archive"],  "messages": [    {      "threadId": "thr_5d31c2a8…",      "from": "[email protected]",      "subject": "Your receipt",      "receivedAt": "2026-08-28T10:00:00.000Z"    }  ],  "warnings": [{ "code": "forward_unverified", "value": "[email protected]" }]}

配信パス上で動くのと同じエンジンがこれに答えます。データベースにもネットワークにも触れない、意図的に純粋な 1 つのモジュールなので、設定画面、ドライラン、SMTP ハンドラーがルールの一致について食い違うことはありえません。二度書かれたプレビューは 1 つの問いに対する 2 つの答えであり、人に見せられるのは誤ったほうです。

構造上の上限があります。最大 1 年分、最大 200 通です。これは実時間の予算を持つ Worker の中で走るので、無制限のスキャンは、途中で死んで何も返さないリクエストになります。

無効なルールもテストできます。それが狙いです。書いて、テストして、それから有効にしてください。

warnings には、構文は通るが期待どおりに動かないルールが現れます。実際に出会うのは、誰も確認していない転送先アドレスでしょう。警告がテストを止めることはありません。ドライランの目的は、最初の問題で失敗することではなく、見つかったものを 1 回の実行ですべて報告することです。

「これをメールボックス全体に実行する」はない

POST /rules/{id}/run は意図的に存在せず、今後も作りません。メールボックス全体にルールを遡って適用することは、範囲が無制限で、取り消せず、やり直しもできません(10 年分のメールに対する trash アクションは、二度目のない 1 回の呼び出しです)。さらに、そのために使う書き込みパスは保存済みのスレッドにマージするので、整理のつもりが、触れたすべてのメッセージを受信トレイの先頭に押し上げる副作用を生みます。

このエンドポイントは、その要求の正直な半分です。実際の問いである「これは何をしていたか」に答え、そのうえで、本当に振り分けたいメッセージは PATCH /threads/{id} で処理します。