Report Field Validator
API Contract
REST
/api/v1/report-validation
6 endpoints
GET
/api/v1/report-validation/api/v1/report-validation
List available validation rule sets by org
Public
Response Example
{
"data": [
{
"ruleset_id": "rules_org_nansen_01_v3",
"org_id": "org_nansen_01",
"schema_version": 3,
"field_count": 9,
"created_at": "2026-02-15T09:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1
}
}
GET
/api/v1/report-validation/api/v1/report-validation/:fieldId/errors
Get current validation errors for a specific field
Public
Response Example
{
"field_id": "fld_mentor_notes",
"errors": [
{
"code": "conditional_required",
"message": "Mentor notes are required when participant engagement is 'high' or 'very_high'"
}
]
}
POST
/api/v1/report-validation/api/v1/report-validation/field
Validate a single field value against its config
Public
Request Example
{
"field_config": {
"field_id": "fld_attendance",
"type": "number",
"required": true,
"min": 0,
"max": 50
},
"value": 53
}
Response Example
{
"field_id": "fld_attendance",
"valid": false,
"errors": [
{
"code": "max_exceeded",
"message": "Value 53 exceeds maximum of 50"
}
]
}
POST
/api/v1/report-validation/api/v1/report-validation/form
Validate an entire form (all fields) against a schema
Public
Request Example
{
"schema_id": "schema_org_nansen_01",
"values": {
"fld_session_date": "2026-03-20",
"fld_attendance": 6,
"fld_session_topic": "Job application support",
"fld_engagement": "high",
"fld_mentor_notes": ""
}
}
Response Example
{
"schema_id": "schema_org_nansen_01",
"is_valid": false,
"errors": {
"fld_mentor_notes": "Required when engagement level is 'high' or 'very_high'"
},
"valid_fields": [
"fld_session_date",
"fld_attendance",
"fld_session_topic",
"fld_engagement"
],
"invalid_fields": [
"fld_mentor_notes"
]
}
PUT
/api/v1/report-validation/api/v1/report-validation/:id
Update a validation ruleset (reserved for schema evolution)
Public
Request Example
{
"rules": [
{
"field_id": "fld_attendance",
"type": "number",
"required": true,
"min": 0,
"max": 100
}
]
}
Response Example
{
"ruleset_id": "rules_org_nansen_01_v4",
"schema_version": 4,
"updated_at": "2026-03-26T10:00:00Z"
}
DELETE
/api/v1/report-validation/api/v1/report-validation/:id
Delete a validation ruleset
Public
Response Example
{
"deleted": true,
"ruleset_id": "rules_org_nansen_01_v3"
}