Report Form Orchestrator
API Contract
REST
/api/v1/report-sessions
7 endpoints
GET
/api/v1/report-sessions/api/v1/report-sessions
List active report drafting sessions
Public
Response Example
{
"data": [
{
"session_id": "sess_4f2a1b9c",
"activity_id": "act_7b4e9f2a",
"mentor_id": "usr_mentor_042",
"report_id": "rpt_8f3a2c1d",
"status": "in_progress",
"fields_completed": 5,
"fields_total": 9,
"started_at": "2026-03-20T14:10:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1
}
}
GET
/api/v1/report-sessions/api/v1/report-sessions/:id
Get a report drafting session by ID
Public
Response Example
{
"session_id": "sess_4f2a1b9c",
"activity_id": "act_7b4e9f2a",
"mentor_id": "usr_mentor_042",
"org_id": "org_nansen_01",
"report_id": "rpt_8f3a2c1d",
"schema_version": 3,
"status": "in_progress",
"current_values": {
"fld_session_date": "2026-03-20",
"fld_attendance": 6,
"fld_session_topic": "Job application support"
},
"validation_state": {
"is_valid": false,
"errors": {
"fld_mentor_notes": "Field is required when engagement is high"
}
},
"started_at": "2026-03-20T14:10:00Z"
}
POST
/api/v1/report-sessions/api/v1/report-sessions
Initialize a new report drafting session for an activity
Public
Request Example
{
"activity_id": "act_7b4e9f2a",
"mentor_id": "usr_mentor_042",
"org_id": "org_nansen_01"
}
Response Example
{
"session_id": "sess_4f2a1b9c",
"report_id": "rpt_8f3a2c1d",
"activity_id": "act_7b4e9f2a",
"schema": {
"schema_id": "schema_org_nansen_01",
"version": 3,
"fields": [
{
"field_id": "fld_session_date",
"label": "Session date",
"type": "date",
"required": true,
"order": 1
}
]
},
"status": "in_progress",
"started_at": "2026-03-20T14:10:00Z"
}
PUT
/api/v1/report-sessions/api/v1/report-sessions/:id
Update field values in a drafting session
Public
Request Example
{
"field_updates": {
"fld_session_topic": "Housing and benefits guidance",
"fld_attendance": 4,
"fld_mentor_notes": "Two participants asked about rent support. Shared NAV guide links."
}
}
Response Example
{
"session_id": "sess_4f2a1b9c",
"updated_fields": [
"fld_session_topic",
"fld_attendance",
"fld_mentor_notes"
],
"validation_state": {
"is_valid": true,
"errors": {}
},
"updated_at": "2026-03-20T14:25:00Z"
}
DELETE
/api/v1/report-sessions/api/v1/report-sessions/:id
Discard a report drafting session
Public
Response Example
{
"deleted": true,
"session_id": "sess_4f2a1b9c",
"report_id": "rpt_8f3a2c1d",
"report_deleted": true
}
POST
/api/v1/report-sessions/api/v1/report-sessions/:id/validate
Validate all current form values against the schema
Public
Response Example
{
"session_id": "sess_4f2a1b9c",
"is_valid": false,
"errors": {
"fld_engagement": "Required field missing",
"fld_challenges_noted": "Must be at least 10 characters when attendance > 5"
},
"validated_at": "2026-03-20T14:28:00Z"
}
POST
/api/v1/report-sessions/api/v1/report-sessions/:id/submit
Submit the completed report and trigger way-forward task creation
Public
Request Example
{
"way_forward_entries": [
{
"description": "Connect participant Amara D. with job centre referral",
"assigned_coordinator_id": "usr_coord_011",
"priority": "high",
"due_date": "2026-03-27"
}
]
}
Response Example
{
"session_id": "sess_4f2a1b9c",
"report_id": "rpt_8f3a2c1d",
"status": "submitted",
"way_forward_items_created": 1,
"submitted_at": "2026-03-20T14:32:00Z"
}