---
title: "Regulatory Obligations Register"
method: POST
path: "/v1/tools/compute_regulatory_obligations_register"
tags: ["obligations-register", "regtech", "control-mapping", "evidence-linkage", "exam-readiness", "coverage-verdict"]
---

# Regulatory Obligations Register

`POST /v1/tools/compute_regulatory_obligations_register`

## Request

- Base URL: `https://ainumbers.co`
- URL: `https://ainumbers.co/v1/tools/compute_regulatory_obligations_register`
- Auth: none declared

A regime-agnostic rule-to-obligation-to-evidence register verdict: obligations in (rule_id, owner, control_ids, evidence_refs), coverage math out (owner and evidence percentages, control-linkage count, unassigned list, one FAIL finding per failing check, overall COVERED or GAPS_FOUND). Five stages in one pure compute() per OBLIGATIONS-REGISTER-BUILD-SPEC.md: intake with fail-closed shape validation, owner coverage, control linkage, evidence linkage, verdict. Owner and evidence coverage are the gated checks; control linkage is measured but never gates. The spec's worked example is carried as the oracle-backed golden fixture (pinned execution_hash bdf74ddc2f836c5e34b374d65f915e96684b061792283d775b08f2e9cd34ba67).

**Tool URL:** https://ainumbers.co/chaingraph/art-691-regulatory-obligations-register.html
**AP2/Policy Mandate export:** yes

## Request body

- object
  - `input_parameters` object, required
    - `as_of` string: Optional as-of date, YYYY-MM-DD; optional; present on the well-formed fixture vectors, absent on some fail-closed ones, and validated as a date string by the kernel whenever present.
    - `rules` object[], required: The obligations register; a register must carry at least one obligation. Each entry must carry a rule_id; a missing or blank rule_id fails closed at intake.
      - `rule_id` string, required
      - `owner` string, nullable: Non-empty string, or null marking an unassigned obligation; absent reads as unassigned.
      - `control_ids` string[], nullable: Absent or null reads as no controls, not as malformed.
      - `evidence_refs` string[], nullable: Absent or null reads as no evidence pointers, not as malformed.

## Response `200`

Successful tool execution result

- object
  - `total` integer, required: Obligations in the register. 0 on the fail-closed intake path.
  - `owner_assigned` integer, required: Obligations with a non-null non-empty owner.
  - `owner_coverage_pct` number, required: owner_assigned / total as a percentage rounded to one decimal (66.7 for 2 of 3).
  - `control_linked` integer, required: Obligations with at least one control_id. Measured, never gated.
  - `evidence_linked` integer, required: Obligations with at least one evidence_ref.
  - `evidence_coverage_pct` number, required: evidence_linked / total as a percentage rounded to one decimal (33.3 for 1 of 3).
  - `unassigned` string[], required: rule_id list of obligations with no owner, in input order. Empty on the fail-closed intake path.
  - `findings` object[], required: One FAIL finding per failing check; empty when every gated check passes. Passing checks emit nothing.
    - `check` 'intake_validation' | 'owner_coverage' | 'evidence_coverage', required
    - `status` 'FAIL', required
    - `detail` string, required
  - `overall_determination` 'COVERED' | 'GAPS_FOUND', required: COVERED iff findings is empty.
  - `errors` string[]: Present only on the fail-closed intake path (malformed register), carrying the same string as the intake_validation finding's detail; non-empty exactly when the conditional compliance flag OBLREG_INTAKE_VALIDATION_FAILED is present (flag-mirror doctrine).

---

[API](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite.md) · [All operations](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/llms.txt) · [OpenAPI document](https://skmtc.dev/ainumbers/apis/ainumbers-co-fintech-intelligence-suite/revisions/b462e4f5bb28?raw)
