Uzskaitīt noteikumus
Katrs savienojuma noteikums tādā secībā, kādā tie tiek izvērtēti.
Izpilda īstu izsaukumu pret jūsu darbvietu, ar jūsu paša atslēgu.
GET /rules
Katrs savienojuma noteikums tādā secībā, kādā tie tiek izvērtēti.
Kā noteikums izpildās
export OE=https://api.openemail.ukexport AUTH="Authorization: Bearer $OPENEMAIL_API_KEY"Noteikums ir nosacījumu saraksts par pienākošu ziņojumu un darbību saraksts, ko veikt ar visu, kas tiem atbilst. Noteikumi pieder SAVIENOJUMAM, nevis tam, kurš tos uzrakstīja. Darbvietas atslēga redz tos pašus noteikumus, ko kolēģis, un autora konta dzēšana tos nepaņem līdzi.
Savienojums tur 100 noteikumus, un katrs no tiem tur ne vairāk kā 20 nosacījumus un 10 darbības. Tie ir aizsargi pret izsprukušu skriptu, nevis plāna ierobežojumi: 101. noteikums ir rule_limit_reached, 422, bet 21. nosacījumu shēma atsaka, pirms kaut kas tiek ierakstīts.
match: "all" nosacījumus apvieno ar UN, match: "any" — ar VAI, un negate uz atsevišķa nosacījuma ir NE. Ligzdota Būla koka nav: (A and B) or C ir divi noteikumi. Tas ir lēmums, nevis īsceļš. Rekursīvu shēmu nevar aprakstīt OpenAPI dokumentā ar $refStrategy: "none", to nevar padot MCP klientam kā JSON Schema, un tieši tāda forma šajā repozitorijā jau ir uzspridzinājusi TypeScript instancēšanas griestus. Divi noteikumi ir arī tas, kā cilvēks to izlasīs atpakaļ pēc pusgada.
Katrs ieslēgtais savienojuma noteikums tiek izvērtēts pret katru pienākošo ziņojumu position secībā, sākot ar mazāko. Izvērtēšana apstājas pēc atbilstoša noteikuma, kas nes stopProcessing: true, un nekas zem tā vispār netiek skatīts. Ja divi atbilstoši noteikumi nosauc mapi, uzvar VĒLĀKAIS, un ziņojums nonāk tā mapē; tā ir nolasīšana, ko dod numurēts saraksts, un vienīgais, kas par secību ir vērts pateikt, nevis atstāt atklājamu.
Noteikumi kļūmes gadījumā paliek VAĻĀ. Nosacījums, ko uzrakstījis vecāks klients, vērtība, kas nesakompilēsies par rakstu, datubāze, kas neatbild: katrs no tiem tiek izlaists, un ziņojums tiek piegādāts tāpat, kā tas būtu piegādāts, ar kļūmi, kas pierakstīta pie izpildes. Noteikumu dzinējs, kas izmet kļūdu, ir ziņojums, kas nekad nepienāk; noteikumu dzinējs, kas tiek izlaists, ir viens ziņojums nepareizajā mapē.
Nekas nedarbojas ar atpakaļejošu spēku. Noteikums izlemj, kas notiek ar pastu, kas pienāk pēc tā izveides, un galapunkta, kas to piemērotu jau esošai pastkastei, ar nodomu nav. Skatiet POST /rules/{id}/test, kas atbild uz jautājumu, ko cilvēki patiesībā uzdod, meklējot tādu.
Piemērs
Nepieciešams rules:read. limit iet līdz 100, cursor ir necaurspīdīgs (padodiet atpakaļ nextCursor, ko saņēmāt), un enabled sašaurina uz vienu slēdža pusi.
curl "$OE/rules?limit=25&enabled=true" -H "$AUTH"{ "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 pieņem virknes true un false, nevis piespiedu kārtā pārveidotu būla vērtību, un tā nav pedantiskums: Boolean("false") ir true, tāpēc pārveidots vaicājums uz "parādi manus izslēgtos noteikumus" būtu atbildējis ar ieslēgtajiem un izskatījies, ka tas strādā.
Saraksta secība ir izvērtēšanas secība, tāpēc lasīt to no augšas uz leju nozīmē lasīt, kas notiek ar ziņojumu. position nav unikāls un nav id (to pārnumurē POST /rules/reorder), tāpēc piesaistiet noteikumu pēc tā rul_ id un nekad pēc tā, kur tas pašlaik atrodas.
matchCount un lastMatchedAt tiek skaitīti datubāzē pastam pienākot, nevis nolasīti un pārrakstīti, tāpēc divi ziņojumi, kas ienāk vienlaikus, nevar pazaudēt skaitījumu starp sevi. Noteikums, kas nekad nav nostrādājis, rāda 0 un null, un tieši uz šo atbildi ir vērts rīkoties, kad kāds saka, ka noteikums nestrādā.