Сертификаты
SecureCodingHub автоматически выпускает сертификат, когда пользователь заканчивает каждый учебный сценарий и каждую практическую задачу в целой категории (Web, API, Mobile, Client). Эти эндпоинты раскрывают выпущенные сертификаты и поиск публичной верификации. Требует области certificates:read.
Конечные точки
| Метод | Путь | Область действия | Назначение |
|---|---|---|---|
GET | /certificates/users/{'{'}userId{'}'} | certificates:read | Статус сертификата для каждой категории для одного пользователя. |
GET | /certificates/verify/{'{'}certNumber{'}'} | certificates:read | Верифицировать сертификат по его публичному номеру. |
Все пути относительны к https://api.limeplate.com/api/public/v1.
Как выпускаются сертификаты
Выпуск полностью автоматический — ручного эндпоинта «выдать» нет. Правила:
- Один сертификат на категорию на пользователя. Категории:
web,api,mobileиclient. - Сертификат категории выпускается в момент, когда пользователь завершил все учебные сценарии и все практические задачи в этой категории.
- Каждому сертификату присваивается постоянный, публично-разделяемый
certificateNumber. - Выпуск срабатывает webhook-событие
certificate.issued. См. Webhook'и для полезной нагрузки.
Повторное завершение контента после выпуска не генерирует новый сертификат; исходный номер постоянен.
Список статуса сертификата для пользователя
Возвращает одну запись на категорию. Записи, где certificateId равно null, представляют категории, которые пользователь начал, но ещё не закончил — удобно для рендеринга UI «Вам осталось 18 из 22 задач до Вашего Web-сертификата».
GET /api/public/v1/certificates/users/{userId}
Authorization: Bearer scs_live_…Ответ
[
{
"categoryId": "web",
"categoryTitle": "Web Application Security",
"certificateId": "7e4c9d09-86ca-4125-bbd8-7fae54c8f654",
"certificateNumber": "SCH-2026-WEB-000123",
"issuedAt": "2026-05-12T08:41:22Z",
"practiceTotal": 75,
"practiceCompleted": 75,
"learnTotal": 22,
"learnCompleted": 22,
"isComplete": true
},
{
"categoryId": "api",
"categoryTitle": "API Security",
"certificateId": null,
"certificateNumber": null,
"issuedAt": null,
"practiceTotal": 60,
"practiceCompleted": 42,
"learnTotal": 18,
"learnCompleted": 14,
"isComplete": false
},
{
"categoryId": "mobile",
"categoryTitle": "Mobile Application Security",
"certificateId": null,
"certificateNumber": null,
"issuedAt": null,
"practiceTotal": 50,
"practiceCompleted": 0,
"learnTotal": 15,
"learnCompleted": 0,
"isComplete": false
},
{
"categoryId": "client",
"categoryTitle": "Client-Side Security",
"certificateId": null,
"certificateNumber": null,
"issuedAt": null,
"practiceTotal": 40,
"practiceCompleted": 6,
"learnTotal": 12,
"learnCompleted": 2,
"isComplete": false
}
]isCompleteзеркалит «practiceCompleted == practiceTotal && learnCompleted == learnTotal».practiceTotalиlearnTotal— это живые счётчики — добавление нового контента в категорию не аннулирует уже выпущенные сертификаты, но это сдвинет знаменатели пользователя в процессе вверх.
Пример
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/certificates/users/1a2b3c4d-5e6f-7081-9203-4d5e6f708192Верифицировать сертификат
Ищет сертификат по его публичному номеру и возвращает владельца, организацию и категорию. Используйте это для поддержки страницы «Верифицируйте Ваш сертификат» на Вашем карьерном сайте или для валидации заявления кандидата во время найма.
GET /api/public/v1/certificates/verify/{certNumber}
Authorization: Bearer scs_live_…Хотя эндпоинт ведёт себя как публичный поиск верификации, API-ключ и область certificates:read всё ещё требуются при его вызове. Если Вы хотите действительно публичную верификацию без авторизации, ссылайтесь на URL верификации, размещённый на SecureCodingHub: https://www.securecodinghub.com/verify/{'{'}certNumber{'}'}.
Ответ
{
"certificateNumber": "SCH-2026-WEB-000123",
"userName": "Jane Smith",
"organizationName": "Acme Corp",
"categoryId": "web",
"categoryTitle": "Web Application Security",
"issuedAt": "2026-05-12T08:41:22Z"
}Возвращает 404 certificate_not_found, если сертификата с таким номером не существует. Отозванные или тестовые номера сертификатов также возвращают 404.
Пример
curl -sS \
-H "Authorization: Bearer $SCH_API_KEY" \
https://api.limeplate.com/api/public/v1/certificates/verify/SCH-2026-WEB-000123Получение событий сертификата
Если Вы хотите проталкивать сертификаты в HR/талант-систему в момент их выпуска — вместо опроса эндпоинта пользователя — подписывайтесь на webhook certificate.issued. Полезная нагрузка webhook'а включает userId, certificateNumber, categoryId и issuedAt, зеркаля ответ верификации. См. Webhook'и.