Bỏ qua tới phần tài liệu
API

Liệt kê quy tắc

Mọi quy tắc trên kết nối, theo thứ tự chúng được đánh giá.

GETapi.openemail.uk/rules

Chạy lệnh gọi thật với không gian làm việc của bạn, bằng khóa của chính bạn.

GET /rules

Mọi quy tắc trên kết nối, theo thứ tự chúng được đánh giá.

Cách một quy tắc chạy

shell
export OE=https://api.openemail.ukexport AUTH="Authorization: Bearer $OPENEMAIL_API_KEY"

Quy tắc là một danh sách điều kiện áp dụng cho thư đến và một danh sách hành động thực hiện trên bất kỳ thư nào khớp. Quy tắc thuộc về KẾT NỐI chứ không thuộc về người đã viết nó. Một khóa không gian làm việc thấy cùng các quy tắc mà đồng nghiệp thấy, và xóa tài khoản của tác giả không kéo theo các quy tắc đó.

Một kết nối chứa tối đa 100 quy tắc, và mỗi quy tắc chứa tối đa 20 điều kiện và 10 hành động. Đó là cơ chế chống script mất kiểm soát chứ không phải giới hạn của gói: quy tắc thứ 101 là rule_limit_reached, mã 422, và điều kiện thứ 21 bị schema từ chối trước khi bất cứ thứ gì được ghi.

match: "all" kết hợp các điều kiện bằng AND, match: "any" kết hợp bằng OR, và negate trên một điều kiện là NOT. Không có cây boolean lồng nhau: (A and B) or C là hai quy tắc. Đó là một quyết định chứ không phải lối tắt. Một schema đệ quy không thể được mô tả trong tài liệu OpenAPI với $refStrategy: "none", không thể được đưa cho MCP client dưới dạng JSON Schema, và chính là hình dạng đã từng vượt quá giới hạn khởi tạo kiểu của TypeScript trong repo này. Hai quy tắc cũng là cách một người đọc lại nó sáu tháng sau.

Mọi quy tắc đang bật trên kết nối được đánh giá với mọi thư đến, theo thứ tự position, thấp nhất trước. Quá trình đánh giá dừng lại sau một quy tắc khớp có stopProcessing: true, và không quy tắc nào bên dưới được xem xét nữa. Khi hai quy tắc khớp cùng chỉ định một thư mục, quy tắc SAU sẽ thắng và thư kết thúc trong thư mục của nó, đó là cách hiểu mà một danh sách đánh số mang lại và là điều duy nhất về thứ tự đáng được nêu rõ thay vì để người dùng tự phát hiện.

Quy tắc thất bại theo kiểu MỞ. Một điều kiện do client cũ hơn viết, một giá trị không biên dịch được thành mẫu, một cơ sở dữ liệu không phản hồi: mỗi trường hợp đó đều bị bỏ qua và thư được chuyển phát như bình thường, với lỗi được ghi lại cho lần chạy. Một rule engine ném lỗi là một thư không bao giờ đến; một rule engine bị bỏ qua là một thư nằm sai thư mục.

Không có gì có hiệu lực hồi tố. Quy tắc quyết định điều gì xảy ra với thư đến sau khi nó tồn tại, và có chủ đích không có endpoint nào áp dụng quy tắc cho hộp thư bạn đã có. Xem POST /rules/{id}/test, lệnh trả lời câu hỏi mà mọi người thực sự đang hỏi khi tìm đến chức năng đó.

Ví dụ

Cần rules:read. limit tối đa là 100, cursor là giá trị opaque (truyền lại nextCursor bạn đã nhận), và enabled thu hẹp về một phía của công tắc.

curl
curl "$OE/rules?limit=25&enabled=true" -H "$AUTH"
Phản hồi
{  "object": "list",  "data": [    {      "object": "rule",      "id": "rul_7f3a1c94e05d3862c1f0a44b",      "name": "Receipts to their own label",      "description": null,      "enabled": true,      "position": 0,      "match": "all",      "conditions": [        { "field": "from_domain", "op": "matches", "value": "*.stripe.com", "negate": false },        { "field": "subject", "op": "contains", "value": "receipt", "negate": false }      ],      "actions": [        { "type": "label", "value": "USER_RECEIPTS" },        { "type": "archive" }      ],      "stopProcessing": true,      "lastMatchedAt": "2026-08-29T11:04:12.000Z",      "matchCount": 148,      "createdAt": "2026-08-01T09:00:00.000Z",      "updatedAt": "2026-08-20T16:31:00.000Z"    }  ],  "hasMore": false,  "nextCursor": null}

enabled nhận các chuỗi truefalse thay vì boolean được ép kiểu, và đó không phải là khó tính: Boolean("false")true, nên một query ép kiểu sẽ trả lời "cho tôi xem các quy tắc đã tắt" bằng các quy tắc đang bật và trông như vẫn hoạt động.

Thứ tự của danh sách là thứ tự đánh giá, nên đọc từ trên xuống dưới là đọc những gì xảy ra với một thư. position không duy nhất và không phải là id (nó được đánh số lại bởi POST /rules/reorder), vì vậy hãy xác định quy tắc bằng id rul_ của nó và không bao giờ bằng vị trí hiện tại.

matchCountlastMatchedAt được đếm trong cơ sở dữ liệu khi thư đến thay vì được đọc rồi ghi lại, nên hai thư đến cùng lúc không thể làm mất một lượt đếm. Một quy tắc chưa bao giờ kích hoạt hiển thị 0null, đó là câu trả lời đáng hành động khi ai đó nói một quy tắc không hoạt động.