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"
}

Additional Metadata

{
  "contract_summary": {
    "total_contracts": 410,
    "total_endpoints": 2416,
    "api_styles_used": [
      "rest"
    ]
  },
  "generated_at": "2026-03-26T06:55:53.316Z"
}