RenewalStatusController::__invoke().App\Http\Controllers\Api\V1\Professional\RenewalStatusControllerapi.v1.professional.renewal-statusAuthorization: Bearer {token}role:professional. A user without the professional role receives 403.GET/api/v1/professional/renewal-status200 OK{
"success": true,
"status": "success",
"message": "OK",
"data": {
"certifications_last_year": 16,
"certifications_required": 5,
"missing_certifications_for_renewal": 0,
"certifications_last_year_for_renew": 16
}
}| Field | Type | Nullable | Description |
|---|---|---|---|
data.certifications_last_year | integer | No | Every certification issued by the professional (as instructor) from 1 January of the current year to today, whatever the course |
data.certifications_required | integer | No | The number of certifications the free renewal requires (the minCertificationRequired application option). 0 when the option is not set |
data.missing_certifications_for_renewal | integer | No | certifications_required minus certifications_last_year, never below 0 |
data.certifications_last_year_for_renew | integer | Yes | The count the website renewal check uses: only certifications of courses that count for renewal, issued in the calendar year of the professional's expire_date when that date is less than a year away, otherwise in the current calendar year. null when the account has no expire_date |
401 Unauthorized{
"success": false,
"status": "error",
"message": "Unauthenticated"
}message is Token expired or Invalid token when a bearer token was sent but is expired or unknown.403 Forbiddenprofessional role (role:professional middleware). The status was captured live with a diver account; the body was not captured, because the local capture environment answers with the framework's debug page rather than the production body.429 Too Many Requestsx-ratelimit-limit: 120. The body is the standard envelope with message: "Too many requests" and a Retry-After header. This section is copied from GET /api/v1/professional/students (same limiter) and was not captured again for this endpoint.missing_certifications_for_renewal is built on certifications_last_year, while the website decides whether the requirement is met with certifications_last_year_for_renew. The two counts can differ (the first includes courses that do not count for renewal), so the missing figure and the website's verdict can disagree.certifications_last_year_for_renew when the goal is to mirror the website renewal check.docs/api/professional/renewals/GET_renewal_status.mdcurl --location 'https://test.diveraid.com/api/v1/professional/renewal-status' \
--header 'Authorization: Bearer <token>'{
"status": "success",
"message": "string",
"data": {
"certifications_last_year": 0,
"certifications_required": 0,
"missing_certifications_for_renewal": 0,
"certifications_last_year_for_renew": 0
}
}