One Language for RiskCompanion site · catalog 1.0
Appendix C

Open formats: records that can leave the building

Most of the twenty-seven sources are prose: principles and steps that each organisation translates into its own fields, differently. Four publish a format a program can check. This page explains what that means for a risk professional, and then offers the files.

What a schema is, in plain words

A schema is the list of fields a record must have, with the type of each (a date, a number, one of a fixed set of values) and the rules they obey. When two organisations adopt the same idea, each designs its own table, and the two cannot be joined without a mapping that someone writes, maintains and gets wrong. When they adopt the same format, there is nothing to map: a record can leave the organisation, to a supervisor, an insurer, a parent or an auditor, and arrive meaning the same thing. A validator is a program that checks a record against the schema and says whether it conforms, so the check is run by software rather than argued in a meeting.

The files below are written in JSON, a plain-text format for structured data that any program can read: a record is a list of named fields and their values. Despite the name, it has nothing to do with programming in JavaScript; it is simply the common language for exchanging data between systems, the way PDF is for documents.

The four formats the framework adopts

ObjectPublished byWhat the framework does
Risk (register row and detail record)NIST IR 8286 Rev. 1 [9]: eleven fields for the row, thirty-four for the detail record, as JSON schemasAdopts the schema whole (component C6.1) and adds its own fields as extensions, so a row stays valid under the base schema
Event (loss event, near miss, incident)FSB Format for Incident Reporting Exchange, FIRE [27]: eighty-seven items in four sectionsOne incident record for cyber, operational and third-party events (C5.4)
HazardUNDRR/ISC Hazard Information Profiles [24]: 281 hazards with persistent identifiersA controlled vocabulary every identification exercise consults (C2.5)
Software componentCISA SBOM minimum elements [15]The component beneath the supplier, with the rule that gaps are declared as gaps (C2.7)

The five the framework proposes

No open schema exists for an objective, a control, a scenario, an indicator or an assurance activity: the things an organisation does about risk rather than what happens to it. The framework publishes draft schemas for the five, shaped like the four that exist, with the attributes of Table 19.1 of the book. They stay proposals until someone other than the author has used them in a running register; if you have, tell us.

A worked example, read field by field

This is the payments risk of chapters 17 and 18 of the book, PAY-014, as a register row with the framework's extensions. The first block is the published NIST row: identifier, the validated statement as description, category, likelihood, impact, exposure, response, cost, owner and status. The crmf block carries what the framework adds: the statement broken into its four parts, the taxonomy node, the tier, the consequence against each objective, the precision of the likelihood, the three snapshots of exposure (inherent, expected, measured), the actual cost of the response, the named decider, the Action Priority band, and the versions the row was scored under.

{
  "id": "PAY-014",
  "description": "Given that beneficiary details for high-value payments are verified by a telephone callback performed from memory under cutoff pressure, there is a possibility that a payment is released to a fraudulent or mistaken beneficiary, affecting the corporate payments service, with an unrecoverable loss and a late payment for the client.",
  "category": "Process execution › manual verification",
  "likelihood": 3,
  "impact": 4,
  "exposure": 12,
  "response_type": "mitigate",
  "response_cost": 420000,
  "response_description": "Selection report SR-2026-07: beneficiary verification block and automated matching.",
  "owner": "Head of payment operations",
  "status": "in progress",
  "crmf": {
    "validated_statement": {
      "condition": "beneficiary details for high-value payments are verified by a telephone callback performed from memory under cutoff pressure",
      "departure": "a payment is released to a fraudulent or mistaken beneficiary",
      "asset": "the corporate payments service",
      "consequence": "an unrecoverable loss and a late payment for the client"
    },
    "taxonomy_node": "process execution / manual verification",
    "process": "corporate payments",
    "tier": "process",
    "consequence_per_objective": [
      {
        "objective_id": "OBJ-PAY-ACCURACY",
        "consequence": 4
      },
      {
        "objective_id": "OBJ-PAY-TIMELINESS",
        "consequence": 2
      },
      {
        "objective_id": "OBJ-CLIENT-TRUST",
        "consequence": 3
      }
    ],
    "likelihood_precision": "estimated from two internal events and one peer case",
    "scale_version": "bank-scale-2026.1",
    "exposure": {
      "inherent": 1800000,
      "expected": 300000,
      "measured": 150000
    },
    "response_cost_actual": 510000,
    "decider": "Head of payment operations",
    "opportunity": false,
    "action_priority": "H",
    "scored_under": {
      "criteria_version": "2026.1",
      "catalog_version": "1.0"
    }
  }
}

The files

FileWhat it is
register-row-extensions.schema.json currentThe framework's extension fields to the NIST register row
objective.schema.json proposalObjective: tier, appetite position, tolerance, aggregated likelihood of being missed
control.schema.json proposalControl: hierarchy level, mode, human dependence, decay, measured effectiveness, designer and assurer
scenario.schema.json proposalScenario: the triplet with uncertainty, variant, technique, versioned inputs
indicator.schema.json proposalIndicator: leading or lagging, threshold, breach record, data lineage
assurance-activity.schema.json proposalAssurance activity: line, provider, reliance, twelve-month safeguard, opinion
PAY-014.jsonThe worked example above

Schemas are released under CC0 1.0 so that nothing stands between an implementer and the file. Every record carries the schema version it validates against and the catalog version it was scored under.