Certification Expiry Checker
API Contract
REST
/api/v1/certification-expiry
4 endpoints
POST
/api/v1/certification-expiry/api/v1/certification-expiry/nightly-check
Manually trigger the nightly certification expiry check
Public
Request Example
{
"triggered_by": "coordinator-007",
"dry_run": false
}
Response Example
{
"run_at": "2026-03-26T02:00:00Z",
"mentors_checked": 87,
"expired_found": 2,
"expiring_soon_found": 5,
"auto_paused": 2,
"reminders_sent": 5,
"duration_ms": 1240
}
GET
/api/v1/certification-expiry/api/v1/certification-expiry/expiring-soon
Get list of mentors whose certifications expire within the threshold
Public
Response Example
{
"data": [
{
"mentor_id": "mentor-042",
"mentor_name": "Aoife Brennan",
"expiry_date": "2026-03-31T00:00:00Z",
"days_remaining": 5,
"certification_type": "peer_mentor_advanced"
},
{
"mentor_id": "mentor-015",
"mentor_name": "Ciarán Ó'Brien",
"expiry_date": "2026-04-10T00:00:00Z",
"days_remaining": 15,
"certification_type": "peer_mentor_standard"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 5
}
}
POST
/api/v1/certification-expiry/api/v1/certification-expiry/:mentorId/trigger-expiry
Manually trigger auto-expiry processing for a specific mentor
Public
Request Example
{
"triggered_by": "coordinator-007",
"override_reason": "certification document rejected"
}
Response Example
{
"mentor_id": "mentor-042",
"auto_expired_at": "2026-03-26T10:00:00Z",
"pause_activated": true,
"pause_record_id": "pause-rec-0020",
"website_hidden": true
}
POST
/api/v1/certification-expiry/api/v1/certification-expiry/:mentorId/send-reminder
Send a certification expiry reminder to a coordinator
Public
Request Example
{
"coordinator_id": "coordinator-007",
"days_remaining": 14
}
Response Example
{
"mentor_id": "mentor-042",
"coordinator_id": "coordinator-007",
"reminder_sent_at": "2026-03-26T08:00:00Z",
"days_remaining": 14,
"notification_channel": "email",
"message_id": "msg-00931"
}