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

Additional Metadata

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