Stats Repository
API Contract
REST
/api/v1/stats
9 endpoints
GET
/api/v1/stats/api/v1/stats/peer-mentor
List peer mentor stats snapshots with pagination
Public
Response Example
{
"data": [
{
"user_id": "usr_4f8a2c",
"total_activities": 47,
"completed_activities": 42,
"pending_activities": 5,
"hours_logged": 128.5,
"time_window": "quarterly",
"start_date": "2026-01-01",
"end_date": "2026-03-26",
"generated_at": "2026-03-26T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1
}
}
GET
/api/v1/stats/api/v1/stats/peer-mentor/:userId
Get stats snapshot for a specific peer mentor
Public
Response Example
{
"user_id": "usr_4f8a2c",
"total_activities": 47,
"completed_activities": 42,
"pending_activities": 5,
"hours_logged": 128.5,
"time_window": "quarterly",
"start_date": "2026-01-01",
"end_date": "2026-03-26",
"generated_at": "2026-03-26T10:00:00Z"
}
POST
/api/v1/stats/api/v1/stats/peer-mentor
Request a fresh stats snapshot for a peer mentor
Public
Request Example
{
"user_id": "usr_4f8a2c",
"time_window": "quarterly",
"start_date": "2026-01-01",
"end_date": "2026-03-26"
}
Response Example
{
"user_id": "usr_4f8a2c",
"total_activities": 47,
"completed_activities": 42,
"pending_activities": 5,
"hours_logged": 128.5,
"time_window": "quarterly",
"start_date": "2026-01-01",
"end_date": "2026-03-26",
"generated_at": "2026-03-26T10:05:00Z"
}
PUT
/api/v1/stats/api/v1/stats/peer-mentor/:userId
Update/recalculate a peer mentor stats snapshot
Public
Request Example
{
"time_window": "monthly",
"start_date": "2026-03-01",
"end_date": "2026-03-26"
}
Response Example
{
"user_id": "usr_4f8a2c",
"total_activities": 18,
"completed_activities": 16,
"pending_activities": 2,
"hours_logged": 44,
"time_window": "monthly",
"start_date": "2026-03-01",
"end_date": "2026-03-26",
"generated_at": "2026-03-26T10:06:00Z"
}
DELETE
/api/v1/stats/api/v1/stats/peer-mentor/:userId
Delete cached stats snapshot for a peer mentor
Public
Response Example
{
"deleted": true,
"user_id": "usr_4f8a2c"
}
GET
/api/v1/stats/api/v1/stats/coordinator
List coordinator chapter stats snapshots
Public
Response Example
{
"data": [
{
"coordinator_id": "usr_coord_9b1c",
"chapter_ids": [
"chp_oslo_01",
"chp_bergen_03"
],
"total_activities": 213,
"completed_activities": 198,
"pending_activities": 15,
"hours_logged": 614,
"time_window": "quarterly",
"start_date": "2026-01-01",
"end_date": "2026-03-26",
"generated_at": "2026-03-26T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1
}
}
GET
/api/v1/stats/api/v1/stats/coordinator/:coordinatorId
Get stats snapshot for a specific coordinator across their chapters
Public
Response Example
{
"coordinator_id": "usr_coord_9b1c",
"chapter_ids": [
"chp_oslo_01",
"chp_bergen_03"
],
"total_activities": 213,
"completed_activities": 198,
"pending_activities": 15,
"hours_logged": 614,
"time_window": "quarterly",
"start_date": "2026-01-01",
"end_date": "2026-03-26",
"generated_at": "2026-03-26T10:00:00Z"
}
GET
/api/v1/stats/api/v1/stats/coordinator/:coordinatorId/breakdown
Get per-peer-mentor breakdown rows for a coordinator's scope
Public
Response Example
{
"data": [
{
"user_id": "usr_4f8a2c",
"full_name": "Anna Johansson",
"chapter_id": "chp_oslo_01",
"chapter_name": "Oslo Sør",
"total_activities": 14,
"hours_logged": 38.5,
"last_activity_date": "2026-03-20"
},
{
"user_id": "usr_7d3e1b",
"full_name": "Erik Nilsen",
"chapter_id": "chp_bergen_03",
"chapter_name": "Bergen Nord",
"total_activities": 9,
"hours_logged": 22,
"last_activity_date": "2026-03-18"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 2
}
}
GET
/api/v1/stats/api/v1/stats/peer-mentor/:userId/chart
Get time-series chart data points for a peer mentor
Public
Response Example
{
"data": [
{
"date": "2026-03-01",
"value": 3.5
},
{
"date": "2026-03-08",
"value": 5
},
{
"date": "2026-03-15",
"value": 4
},
{
"date": "2026-03-22",
"value": 6.5
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 4
}
}