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

Additional Metadata

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