List the rule catalog with the bank's policy
GET
/v1/rules
const url = 'http://localhost:8080/v1/rules';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:8080/v1/rulesReturns the active ruleset version and every rule; shipped and bank-authored; with id, version, severity, title, the canonical fields it reads, whether it is enabled, and (for custom rules) its declarative spec. Disabled rules are skipped by reconciliation and named on every run and in evidence. Any staff role or an API key with status:read.
Responses
Section titled “Responses”OK
Media typeapplication/json
object
rulesetVersion
required
string
rules
required
Array<object>
One row of the Rules page: a shipped or bank-authored rule with its policy state.
object
id
required
string
version
required
string
severity
required
string
title
required
string
fields
required
Array<string>
enabled
required
boolean
isCustom
required
boolean
spec
required
One of:
null
One bank-authored rule, declaratively: a canonical field and one of three comparisons. Evaluated by CustomRule; the same deterministic engine path as the shipped catalog, so custom rules are configuration, never code, and runtime behaviour stays explainable line by line.
object
id
required
string
title
required
string
severity
required
string
field
required
string
comparison
required
string
kind
null | string
docType
null | string
Examplegenerated
{ "rulesetVersion": "example", "rules": [ { "id": "example", "version": "example", "severity": "example", "title": "example", "fields": [ "example" ], "enabled": true, "isCustom": true, "spec": { "id": "example", "title": "example", "severity": "example", "field": "example", "comparison": "example", "kind": "example", "docType": "example" } } ]}