Assemble rules into a scored decision
Beta. The request and response shapes may still change.
Assemble rules into a scored decision: each rule carries a weight, the weights of the rules that trigger are summed, and the recipe flags when the total reaches the threshold.
Every rule associated here is read and compiled against this recipe’s own environment - the attributes and parameters it declares. A rule that does not exist, or that references a name this recipe does not declare, is refused with the offending rules.N.rule_id in details.
Start in SHADOW
A threshold set without evidence is a guess. SHADOW evaluates against live traffic and reports its verdict without it counting toward the evaluation-level answer, which is the only way to see what a threshold would have done before it decides anything. Move to LIVE when the numbers justify it.
DRAFT and INACTIVE are the two ways a recipe exists without being in service - one not yet put into it, one taken back out. A flow referencing either runs its other recipes and reports nothing for that one: it wasn’t asked, which is not the same as having passed.
Preempting rules
preempts makes a rule’s outcome the recipe’s verdict, bypassing the score. Use it for a condition that is conclusive on its own.
Expressing that through weights instead means picking a number above every threshold the recipe might later be given - a fact about the recipe’s arithmetic rather than about the rule, which quietly stops being true when the threshold moves.
The weight still applies and the score is still reported. In an evaluation, determined_by references the preempting rule; it is the only thing that accounts for a recipe reporting a score under its threshold and flagging anyway.
Attributes and parameters
Both let a rule read something the signal catalog doesn’t know. They differ in how long a value lasts, and that difference decides everything else:What is validated
Every rule associated here is read and compiled in this recipe’s environment, which is what catches a mismatch between a rule and the recipe using it:- a rule identifier that doesn’t exist, or belongs to no tier you can reach
- a rule reading
attr.orparam.names this recipe doesn’t declare - a managed rule reading any
attr.orparam.name at all - Prelude’s rules read signals only, and one pinned to your recipe would stop being shared
details entry per rule, keyed rules.N.rule_id - so a recipe with three problems takes one round trip to fix, not three. A managed rule that won’t compile is reported as unusable without quoting its expression.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
128"signup_proxy_abuse"
Whether the recipe takes part in an evaluation, and whether its verdict counts.
DRAFT- Not yet in service. It does not evaluate.SHADOW- Evaluates and is reported, so you can watch a threshold against live traffic before trusting it.LIVE- Evaluates, and its verdict counts toward the evaluation-level answer.INACTIVE- Taken back out of service. It does not evaluate.
DRAFT, SHADOW, LIVE, INACTIVE "SHADOW"
The score at which the recipe flags. The weights of the rules that triggered are summed, and the recipe flags when the total reaches this value. A threshold of 0 flags every evaluation.
70
The rules this recipe scores over, with their weights. At least one is required.
1The request-level facts this recipe's rules may read, declared by key and referenced in an expression as attr.<key>. Values arrive with each evaluation.
A key is lower snake_case, at most 64 characters, and at most 32 may be declared. An attribute a rule reads and a recipe does not declare is a compile error, reported against that rule.
This recipe's configuration: keys and their values, referenced in an expression as param.<key>, fixed until the recipe is replaced. Use them for the country list or the limit a shared rule should apply here, so the same rule can serve two recipes tuned differently.
Keys follow the same format as attributes, and at most 32 may be declared. Values are strings - the only type either supports today.
Response
Created
The recipe identifier. Reference it in a flow's recipes to run it.
"rcp_01jc0t6fwwfgfsq1md24mhyztj"
"signup_proxy_abuse"
The version of the Prelude signal catalog this recipe's rules are compiled against, stamped by the server when the recipe is created or replaced. It is what stops a catalog that later grows or deprecates entries from silently changing what this recipe means.
1
DRAFT, SHADOW, LIVE, INACTIVE 70