Certification Status Service
API Contract
REST
/api/v1/certification-status
5 endpoints
GET
/api/v1/certification-status/api/v1/certification-status
List derived certification statuses for all mentors in an org
Public
Response Example
{
"data": [
{
"mentor_id": "mentor_a1b2c3",
"status": "active",
"is_suppressed_from_public": false,
"days_until_expiry": 234,
"is_within_warning_window": false
},
{
"mentor_id": "mentor_d4e5f6",
"status": "warning",
"is_suppressed_from_public": false,
"days_until_expiry": 15,
"is_within_warning_window": true
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 48
}
}
GET
/api/v1/certification-status/api/v1/certification-status/:mentor_id
Get derived certification status for a specific mentor
Public
Response Example
{
"mentor_id": "mentor_a1b2c3",
"status": "active",
"is_suppressed_from_public": false,
"expiry_date": "2028-01-20T00:00:00Z",
"days_until_expiry": 665,
"is_within_warning_window": false,
"warning_threshold_days": 30
}
POST
/api/v1/certification-status/api/v1/certification-status/derive
Derive status from supplied expiry date and paused flag (stateless computation)
Public
Request Example
{
"expiry_date": "2026-04-10T00:00:00Z",
"is_paused": false,
"is_hlf": false,
"threshold_days": 30
}
Response Example
{
"status": "warning",
"days_until_expiry": 15,
"is_within_warning_window": true,
"is_suppressed_from_public": false
}
PUT
/api/v1/certification-status/api/v1/certification-status/:mentor_id
Recompute and persist derived status for a mentor
Public
Request Example
{
"force_recompute": true
}
Response Example
{
"mentor_id": "mentor_a1b2c3",
"previous_status": "warning",
"new_status": "active",
"recomputed_at": "2026-03-26T10:00:00Z"
}
DELETE
/api/v1/certification-status/api/v1/certification-status/:mentor_id
Clear cached derived status (forces recompute on next fetch)
Public
Response Example
{
"cleared": true,
"mentor_id": "mentor_a1b2c3"
}