Validation Models
This page documents the data models related to data validation rules and results.
ValidationReport
Result of a validation run against workbook data.
Properties
| Property | Type | Description |
report_id | string | Report identifier |
passed | boolean | Whether all checks passed |
summary | ValidationSummary | Count of findings by severity |
findings | ValidationFinding[] | Individual validation findings |
validators_run | string[] | Categories of validators executed |
domain | string | Validation domain (clo or servicer) |
workbook_id | string (UUID)? | Source workbook (if applicable) |
sheet_name | string? | Validated sheet (if applicable) |
ingest_gate | IngestGate? | Ingestion gate result |
ingest_diagnostics | object? | Schema drift and mapping diagnostics |
Example
{
"report_id": "val_abc123",
"passed": false,
"summary": {
"critical": 0,
"errors": 2,
"warnings": 5,
"total": 7
},
"findings": [
{
"rule_id": "clo_par_value_positive",
"name": "Par Value Positive Check",
"severity": "error",
"category": "sanity",
"message": "2 loans have negative par values",
"affected_rows": [45, 89],
"field": "par_value"
}
],
"validators_run": ["sanity", "regulatory"],
"domain": "clo",
"workbook_id": "550e8400-e29b-41d4-a716-446655440000",
"sheet_name": "Holdings"
}
ValidationFinding
A single validation finding.
Properties
| Property | Type | Description |
rule_id | string | Rule that generated this finding |
name | string | Human-readable rule name |
severity | string | Finding severity |
category | string | Rule category (sanity or regulatory) |
message | string | Description of the finding |
affected_rows | integer[]? | Row indices with issues |
field | string? | Field name with the issue |
ValidationRule
Definition of a validation rule.
Properties
| Property | Type | Description |
rule_id | string | Unique rule identifier |
name | string | Rule display name |
description | string | What the rule validates |
domain | string | Applicable domain: clo, servicer, or both |
severity | string | Default severity level |
category | string | Rule category: sanity or regulatory |
thresholds | object? | Configurable thresholds |
Example
{
"rule_id": "clo_par_value_positive",
"name": "Par Value Positive Check",
"description": "Validates that all par values are positive numbers",
"domain": "clo",
"severity": "error",
"category": "sanity",
"thresholds": null
}
IngestGate
Controls whether data ingestion should proceed based on validation results.
Properties
| Property | Type | Description |
allowed | boolean | Whether ingestion is allowed |
blocking_findings | ValidationFinding[] | Critical findings that block ingestion |
Enumerations
Validation Domain
| Value | Description |
clo | CLO holdings and portfolio data |
servicer | Servicer snapshot and loan data |
both | Rules applicable to either domain |
Rule Category
| Value | Description |
sanity | Basic data integrity (types, ranges, required fields) |
regulatory | Compliance and regulatory requirements |