Railsr Compliance Firewall API.
The Firewall is a real-time rule engine that evaluates every transaction before it executes. Rules are written in a Lisp-like DSL. Matched transactions are either blocked or placed in quarantine for manual review.
Rule Syntax
Rules use a Lisp-style s-expression DSL over context data objects
(enduser, beneficiary, transaction, ledger).
; Block transactions over £10,000 to non-UK beneficiaries
(and
(> (transaction.amount) 1000000)
(not (= (beneficiary.country) "GB")))Available Actions
"block"— reject the transaction immediately"quarantine"— hold for manual review"pass"— explicitly allow (overrides lower-priority rules)
Datasets
Upload CSV lookup tables and reference them in rules via
(in-dataset "dataset_name" (beneficiary.bic)).
Summary
Functions
Upload a new firewall dataset (CSV format).
Delete a dataset by name.
Get reference documentation for built-in firewall functions.
Retrieve the current firewall rule-set.
List all firewall datasets.
Create or replace the firewall rule-set for the customer.
Replace an existing dataset by name.
Functions
@spec create_dataset( map(), keyword() ) :: {:ok, Railsr.Types.FirewallDataset.t()} | {:error, Railsr.Error.t()}
Upload a new firewall dataset (CSV format).
Params
:name— dataset identifier (used in rules viain-dataset):columns— list of column names:rows— list of row value lists
Railsr.Resources.Firewall.create_dataset(%{
name: "blocked_bics",
columns: ["bic"],
rows: [["CHASUS33"], ["DEUTDEDB"]]
})
@spec delete_dataset( String.t(), keyword() ) :: :ok | {:error, Railsr.Error.t()}
Delete a dataset by name.
@spec get_functions(keyword()) :: {:ok, map()} | {:error, Railsr.Error.t()}
Get reference documentation for built-in firewall functions.
@spec get_rules(keyword()) :: {:ok, Railsr.Types.FirewallRules.t()} | {:error, Railsr.Error.t()}
Retrieve the current firewall rule-set.
@spec list_datasets(keyword()) :: {:ok, [Railsr.Types.FirewallDataset.t()]} | {:error, Railsr.Error.t()}
List all firewall datasets.
@spec set_rules( map(), keyword() ) :: {:ok, Railsr.Types.FirewallRules.t()} | {:error, Railsr.Error.t()}
Create or replace the firewall rule-set for the customer.
Rules are evaluated in order; first match wins.
Params
:rules— list of rule maps, each with::name— human-readable rule name:rule— DSL string:action—"block"|"quarantine"|"pass":priority— integer (lower = higher priority)
Railsr.Resources.Firewall.set_rules(%{
rules: [
%{
name: "Block high-value international",
rule: ~s[(and (> (transaction.amount) 1000000)
(not (= (beneficiary.country) "GB"))))],
action: "quarantine",
priority: 10
}
]
})
@spec update_dataset(String.t(), map(), keyword()) :: {:ok, Railsr.Types.FirewallDataset.t()} | {:error, Railsr.Error.t()}
Replace an existing dataset by name.