Badge Criteria Integration
API Contract
REST
/api/v1/badge-definitions
8 endpoints
GET
/api/v1/badge-definitions/api/v1/badge-definitions
List all recruitment badge definitions (getRecruitmentBadgeDefinitions)
Public
Response Example
{
"data": [
{
"id": "badge_recruiter_bronze",
"name": "Recruiter — Bronze",
"description": "Successfully recruited 1 new member",
"category": "recruitment",
"required_recruitments": 1,
"icon_url": "https://cdn.org.no/badges/recruiter-bronze.png",
"is_active": true,
"created_at": "2025-09-01T00:00:00Z"
},
{
"id": "badge_recruiter_silver",
"name": "Recruiter — Silver",
"description": "Successfully recruited 5 new members",
"category": "recruitment",
"required_recruitments": 5,
"icon_url": "https://cdn.org.no/badges/recruiter-silver.png",
"is_active": true,
"created_at": "2025-09-01T00:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 5
}
}
GET
/api/v1/badge-definitions/api/v1/badge-definitions/:id
Get a badge definition by ID
Public
Response Example
{
"id": "badge_recruiter_bronze",
"name": "Recruiter — Bronze",
"description": "Successfully recruited 1 new member",
"category": "recruitment",
"required_recruitments": 1,
"icon_url": "https://cdn.org.no/badges/recruiter-bronze.png",
"is_active": true,
"created_at": "2025-09-01T00:00:00Z"
}
POST
/api/v1/badge-definitions/api/v1/badge-definitions
Create a new badge definition
Public
Request Example
{
"name": "Recruiter — Gold",
"description": "Successfully recruited 10 new members",
"category": "recruitment",
"required_recruitments": 10,
"icon_url": "https://cdn.org.no/badges/recruiter-gold.png",
"is_active": true
}
Response Example
{
"id": "badge_recruiter_gold",
"name": "Recruiter — Gold",
"description": "Successfully recruited 10 new members",
"category": "recruitment",
"required_recruitments": 10,
"icon_url": "https://cdn.org.no/badges/recruiter-gold.png",
"is_active": true,
"created_at": "2026-03-26T12:00:00Z"
}
PUT
/api/v1/badge-definitions/api/v1/badge-definitions/:id
Update a badge definition
Public
Request Example
{
"required_recruitments": 12,
"is_active": true
}
Response Example
{
"id": "badge_recruiter_gold",
"name": "Recruiter — Gold",
"description": "Successfully recruited 10 new members",
"category": "recruitment",
"required_recruitments": 12,
"icon_url": "https://cdn.org.no/badges/recruiter-gold.png",
"is_active": true,
"updated_at": "2026-03-26T12:05:00Z"
}
DELETE
/api/v1/badge-definitions/api/v1/badge-definitions/:id
Delete a badge definition
Public
Response Example
{
"id": "badge_recruiter_gold",
"deleted": true,
"deleted_at": "2026-03-26T12:10:00Z"
}
POST
/api/v1/badge-definitions/api/v1/badge-definitions/evaluate
Evaluate badge criteria for a mentor (evaluateBadgeCriteria)
Public
Request Example
{
"mentor_id": "usr_4491"
}
Response Example
{
"mentor_id": "usr_4491",
"total_recruitments": 5,
"eligible_badges": [
"badge_recruiter_bronze",
"badge_recruiter_silver"
],
"already_awarded": [
"badge_recruiter_bronze"
],
"newly_eligible": [
"badge_recruiter_silver"
],
"evaluated_at": "2026-03-26T12:00:00Z"
}
POST
/api/v1/badge-definitions/api/v1/badge-definitions/awards
Trigger a badge award for a mentor (triggerBadgeAward)
Public
Request Example
{
"mentor_id": "usr_4491",
"badge_id": "badge_recruiter_silver",
"recruitment_count": 5
}
Response Example
{
"award_id": "award_7d9e2f",
"mentor_id": "usr_4491",
"badge_id": "badge_recruiter_silver",
"badge_name": "Recruiter — Silver",
"awarded_at": "2026-03-26T12:01:00Z",
"notification_sent": true
}
POST
/api/v1/badge-definitions/api/v1/badge-definitions/on-recruitment-confirmed
Notify badge system of confirmed recruitment (onRecruitmentConfirmed)
Public
Request Example
{
"mentor_id": "usr_4491",
"recruitment_count": 5
}
Response Example
{
"mentor_id": "usr_4491",
"recruitment_count": 5,
"badges_triggered": [
"badge_recruiter_silver"
],
"processed_at": "2026-03-26T12:01:00Z"
}