Saltar para a documentação
API

Testar uma regra

Quais das suas mensagens recentes esta regra teria apanhado. Não altera nada.

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

Executa a chamada real contra o seu espaço de trabalho, com a sua própria chave.

POST /rules/{id}/test

Quais das suas mensagens recentes esta regra teria apanhado. Não altera nada.

Exemplo

Requer rules:read. Uma execução de teste lê uma caixa de correio e não escreve nada, por isso não é uma operação de rules:write. days assume 30 por omissão e vai até 365, limit assume 50 e vai até 200, e threadIds testa conversas nomeadas em vez de uma janela.

curl
curl -X POST "$OE/rules/rul_7f3a1c94e05d3862c1f0a44b/test" -H "$AUTH" \  -H "Content-Type: application/json" \  -d '{ "days": 30, "limit": 50 }'
Resposta
{  "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]" }]}

Quem responde a isto é o mesmo motor que corre no caminho de entrega. É um módulo, deliberadamente puro (sem base de dados, sem rede), para que o ecrã de definições, a execução de teste e o handler de SMTP não possam discordar sobre se uma regra corresponde. Uma pré-visualização escrita duas vezes são duas respostas a uma pergunta, e a que é mostrada à pessoa é a que está errada.

Limitado por construção: no máximo 200 mensagens ao longo de no máximo um ano. Isto corre dentro de um Worker com um orçamento de tempo real, e uma varredura sem limites é um pedido que morre a meio sem nada para mostrar.

Uma regra desativada pode à mesma ser testada. É esse o objetivo: escrevê-la, testá-la, e depois ativá-la.

warnings é onde aparece uma regra que é válida mas não se vai comportar. Um endereço de reencaminhamento que ninguém confirmou é o que vai encontrar. Um aviso nunca interrompe o teste: o objetivo de uma execução de teste é relatar tudo o que encontrou numa só passagem e não falhar logo à primeira.

Não há "correr isto sobre a minha caixa de correio"

Não existe deliberadamente POST /rules/{id}/run, e não vai existir. Aplicar uma regra retroativamente a uma caixa de correio inteira é ilimitado, irreversível e não tem como ser desfeito (uma ação trash sobre dez anos de correio é uma chamada sem segunda oportunidade), e o caminho de escrita que teria de usar funde-se na conversa guardada, o que subiria todas as mensagens que tocasse para o topo da caixa de entrada como efeito secundário de uma arrumação.

Este endpoint é a metade honesta desse pedido: responde a "o que é que isto teria feito", que é a pergunta, e depois arquiva as mensagens que realmente queria com PATCH /threads/{id}.