For the complete documentation index, see llms.txt. This page is also available as Markdown.

Mentor

get

List all scope grants for a mentor.

Authorizations
sessionidstringRequired
Path parameters
mentor_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/{mentor_id}/grants/
GET /api/v1/dashboard/mentor/{mentor_id}/grants/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "scope_type": "COMPANY_MENTOR",
      "scope_id": "text",
      "is_active": true,
      "granted_by_name": "text",
      "granted_at": "2026-01-01T00:00:00.000Z",
      "revoked_by_name": "text",
      "revoked_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
delete

Revoke a single mentor scope grant.

Authorizations
sessionidstringRequired
Path parameters
grant_idstringRequired
mentor_idstringRequired
Responses
200

No response body

No content

delete/api/v1/dashboard/mentor/{mentor_id}/grants/{grant_id}/
DELETE /api/v1/dashboard/mentor/{mentor_id}/grants/{grant_id}/ HTTP/1.1
Accept: */*
200

No response body

No content

get

Get recent activity of the currently logged-in mentor (sessions created, tasks appraised).

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/activity/
GET /api/v1/dashboard/mentor/activity/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "activity_type": "text",
      "title": "text",
      "description": "text",
      "date": "2026-01-01T00:00:00.000Z",
      "status": "text"
    }
  ]
}
post

Admin-only endpoint for bulk assigning / revoking mentor status.

POST /api/v1/mentor/admin/assign/ Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] } Assigns all listed users as mentors atomically.

DELETE /api/v1/mentor/admin/assign/<user_muid>/ Revokes mentor assignment for the given user. Optional query param ?mentor_tier= scopes revocation to a single tier.

Authorizations
sessionidstringRequired
Responses
200

No response body

No content

post/api/v1/dashboard/mentor/admin/assign/
POST /api/v1/dashboard/mentor/admin/assign/ HTTP/1.1
Accept: */*
200

No response body

No content

delete

Admin-only endpoint for bulk assigning / revoking mentor status.

POST /api/v1/mentor/admin/assign/ Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] } Assigns all listed users as mentors atomically.

DELETE /api/v1/mentor/admin/assign/<user_muid>/ Revokes mentor assignment for the given user. Optional query param ?mentor_tier= scopes revocation to a single tier.

Authorizations
sessionidstringRequired
Responses
204

No response body

No content

delete/api/v1/dashboard/mentor/admin/assign/
DELETE /api/v1/dashboard/mentor/admin/assign/ HTTP/1.1
Accept: */*
204

No response body

No content

post

Admin-only endpoint for bulk assigning / revoking mentor status.

POST /api/v1/mentor/admin/assign/ Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] } Assigns all listed users as mentors atomically.

DELETE /api/v1/mentor/admin/assign/<user_muid>/ Revokes mentor assignment for the given user. Optional query param ?mentor_tier= scopes revocation to a single tier.

Authorizations
sessionidstringRequired
Path parameters
user_muidstringRequired
Responses
200

No response body

No content

post/api/v1/dashboard/mentor/admin/assign/{user_muid}/
POST /api/v1/dashboard/mentor/admin/assign/{user_muid}/ HTTP/1.1
Accept: */*
200

No response body

No content

delete

Admin-only endpoint for bulk assigning / revoking mentor status.

POST /api/v1/mentor/admin/assign/ Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] } Assigns all listed users as mentors atomically.

DELETE /api/v1/mentor/admin/assign/<user_muid>/ Revokes mentor assignment for the given user. Optional query param ?mentor_tier= scopes revocation to a single tier.

Authorizations
sessionidstringRequired
Path parameters
user_muidstringRequired
Responses
204

No response body

No content

delete/api/v1/dashboard/mentor/admin/assign/{user_muid}/
DELETE /api/v1/dashboard/mentor/admin/assign/{user_muid}/ HTTP/1.1
Accept: */*
204

No response body

No content

get

List all availability slots for the logged-in mentor.

Authorizations
sessionidstringRequired
Query parameters
ig_idstringOptional
is_activebooleanOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/availability/
GET /api/v1/dashboard/mentor/availability/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "mentor_user_id": "text",
      "ig_id": "text",
      "ig_name": "text",
      "weekday": 1,
      "start_time": "00:00:00",
      "end_time": "00:00:00",
      "timezone": "text",
      "is_active": true,
      "valid_from": "2026-01-01",
      "valid_to": "2026-01-01",
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Create a new mentor availability slot.

Authorizations
sessionidstringRequired
Body
igstring · nullableOptional
weekdayinteger · min: -32768 · max: 32767Required
start_timestring · timeRequired
end_timestring · timeRequired
timezonestring · max: 64Optional
is_activebooleanOptional
valid_fromstring · date · nullableOptional
valid_tostring · date · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/mentor/availability/
POST /api/v1/dashboard/mentor/availability/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 156

{
  "ig": "text",
  "weekday": 1,
  "start_time": "00:00:00",
  "end_time": "00:00:00",
  "timezone": "text",
  "is_active": true,
  "valid_from": "2026-01-01",
  "valid_to": "2026-01-01"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "ig": "text",
    "weekday": 1,
    "start_time": "00:00:00",
    "end_time": "00:00:00",
    "timezone": "text",
    "is_active": true,
    "valid_from": "2026-01-01",
    "valid_to": "2026-01-01"
  }
}
delete

Delete a mentor availability slot.

Authorizations
sessionidstringRequired
Responses
204

No response body

No content

delete/api/v1/dashboard/mentor/availability/
DELETE /api/v1/dashboard/mentor/availability/ HTTP/1.1
Accept: */*
204

No response body

No content

patch

Update an existing mentor availability slot.

Authorizations
sessionidstringRequired
Body
igstring · nullableOptional
weekdayinteger · min: -32768 · max: 32767Optional
start_timestring · timeOptional
end_timestring · timeOptional
timezonestring · max: 64Optional
is_activebooleanOptional
valid_fromstring · date · nullableOptional
valid_tostring · date · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/mentor/availability/
PATCH /api/v1/dashboard/mentor/availability/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 156

{
  "ig": "text",
  "weekday": 1,
  "start_time": "00:00:00",
  "end_time": "00:00:00",
  "timezone": "text",
  "is_active": true,
  "valid_from": "2026-01-01",
  "valid_to": "2026-01-01"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "ig": "text",
    "weekday": 1,
    "start_time": "00:00:00",
    "end_time": "00:00:00",
    "timezone": "text",
    "is_active": true,
    "valid_from": "2026-01-01",
    "valid_to": "2026-01-01"
  }
}
get

List all availability slots for the logged-in mentor.

Authorizations
sessionidstringRequired
Path parameters
slot_idstringRequired
Query parameters
ig_idstringOptional
is_activebooleanOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/availability/{slot_id}/
GET /api/v1/dashboard/mentor/availability/{slot_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "mentor_user_id": "text",
      "ig_id": "text",
      "ig_name": "text",
      "weekday": 1,
      "start_time": "00:00:00",
      "end_time": "00:00:00",
      "timezone": "text",
      "is_active": true,
      "valid_from": "2026-01-01",
      "valid_to": "2026-01-01",
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Create a new mentor availability slot.

Authorizations
sessionidstringRequired
Path parameters
slot_idstringRequired
Body
igstring · nullableOptional
weekdayinteger · min: -32768 · max: 32767Required
start_timestring · timeRequired
end_timestring · timeRequired
timezonestring · max: 64Optional
is_activebooleanOptional
valid_fromstring · date · nullableOptional
valid_tostring · date · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/mentor/availability/{slot_id}/
POST /api/v1/dashboard/mentor/availability/{slot_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 156

{
  "ig": "text",
  "weekday": 1,
  "start_time": "00:00:00",
  "end_time": "00:00:00",
  "timezone": "text",
  "is_active": true,
  "valid_from": "2026-01-01",
  "valid_to": "2026-01-01"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "ig": "text",
    "weekday": 1,
    "start_time": "00:00:00",
    "end_time": "00:00:00",
    "timezone": "text",
    "is_active": true,
    "valid_from": "2026-01-01",
    "valid_to": "2026-01-01"
  }
}
delete

Delete a mentor availability slot.

Authorizations
sessionidstringRequired
Path parameters
slot_idstringRequired
Responses
204

No response body

No content

delete/api/v1/dashboard/mentor/availability/{slot_id}/
DELETE /api/v1/dashboard/mentor/availability/{slot_id}/ HTTP/1.1
Accept: */*
204

No response body

No content

patch

Update an existing mentor availability slot.

Authorizations
sessionidstringRequired
Path parameters
slot_idstringRequired
Body
igstring · nullableOptional
weekdayinteger · min: -32768 · max: 32767Optional
start_timestring · timeOptional
end_timestring · timeOptional
timezonestring · max: 64Optional
is_activebooleanOptional
valid_fromstring · date · nullableOptional
valid_tostring · date · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/mentor/availability/{slot_id}/
PATCH /api/v1/dashboard/mentor/availability/{slot_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 156

{
  "ig": "text",
  "weekday": 1,
  "start_time": "00:00:00",
  "end_time": "00:00:00",
  "timezone": "text",
  "is_active": true,
  "valid_from": "2026-01-01",
  "valid_to": "2026-01-01"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "ig": "text",
    "weekday": 1,
    "start_time": "00:00:00",
    "end_time": "00:00:00",
    "timezone": "text",
    "is_active": true,
    "valid_from": "2026-01-01",
    "valid_to": "2026-01-01"
  }
}
get

Get details of a specific mentor by ID.

Authorizations
sessionidstringRequired
Path parameters
mentor_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/detail/{mentor_id}/
GET /api/v1/dashboard/mentor/detail/{mentor_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "user": "text",
    "user_full_name": "text",
    "user_email": "text",
    "about": "text",
    "expertise": "text",
    "reason": "text",
    "hours": 1,
    "mentor_tier": "IG_MENTOR",
    "status": "PENDING",
    "preferred_ig_ids": null,
    "org": "text",
    "verified_by": "text",
    "verified_at": "2026-01-01T00:00:00.000Z",
    "company": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
get

List all mentor applications with filtering.

Authorizations
sessionidstringRequired
Query parameters
mentor_tierstringOptional
statusstringOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/list/
GET /api/v1/dashboard/mentor/list/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "user_id": "text",
      "user_full_name": "text",
      "user_email": "text",
      "muid": "text",
      "about": "text",
      "expertise": "text",
      "verification_note": "text",
      "verified_at": "2026-01-01T00:00:00.000Z",
      "mentor_tier": "IG_MENTOR",
      "status": "PENDING",
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
get

Retrieve an overview dashboard of metrics aggregated dynamically based on the authenticated mentor's active scopes (Campus, Company, IG).

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/overview/
GET /api/v1/dashboard/mentor/overview/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "scopes": [
      {
        "scope_type": "text",
        "scope_id": "text",
        "scope_name": "text",
        "metrics": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        }
      }
    ]
  }
}
get

Retrieve the profile of a verified mentor.

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/profile/
GET /api/v1/dashboard/mentor/profile/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "user": "text",
    "user_full_name": "text",
    "user_email": "text",
    "about": "text",
    "expertise": "text",
    "reason": "text",
    "hours": 1,
    "mentor_tier": "IG_MENTOR",
    "status": "PENDING",
    "preferred_ig_ids": null,
    "org": "text",
    "verified_by": "text",
    "verified_at": "2026-01-01T00:00:00.000Z",
    "company": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
patch

Update the profile of a verified mentor.

Authorizations
sessionidstringRequired
Body
aboutstring · max: 1000 · nullableOptional
expertisestring · nullableOptional
reasonstring · max: 1000 · nullableOptional
hoursinteger · int64 · max: 4294967295Optional
preferred_ig_idsany · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/mentor/profile/
PATCH /api/v1/dashboard/mentor/profile/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 85

{
  "about": "text",
  "expertise": "text",
  "reason": "text",
  "hours": 1,
  "preferred_ig_ids": null
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "about": "text",
    "expertise": "text",
    "reason": "text",
    "hours": 1,
    "preferred_ig_ids": null
  }
}
get

List active availability slots for a specific mentor.

Authorizations
sessionidstringRequired
Path parameters
mentor_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/public/availability/{mentor_id}/
GET /api/v1/dashboard/mentor/public/availability/{mentor_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "mentor_user_id": "text",
      "ig_id": "text",
      "ig_name": "text",
      "weekday": 1,
      "start_time": "00:00:00",
      "end_time": "00:00:00",
      "timezone": "text",
      "is_active": true,
      "valid_from": "2026-01-01",
      "valid_to": "2026-01-01",
      "created_at": "2026-01-01T00:00:00.000Z",
      "updated_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
get

View a mentor's profile publicly.

Authorizations
sessionidstringRequired
Path parameters
mentor_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/public/profile/{mentor_id}/
GET /api/v1/dashboard/mentor/public/profile/{mentor_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "user": "text",
    "user_full_name": "text",
    "user_email": "text",
    "about": "text",
    "expertise": "text",
    "reason": "text",
    "hours": 1,
    "mentor_tier": "IG_MENTOR",
    "status": "PENDING",
    "preferred_ig_ids": null,
    "org": "text",
    "verified_by": "text",
    "verified_at": "2026-01-01T00:00:00.000Z",
    "company": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
post

Submit a new mentor registration.

Authorizations
sessionidstringRequired
Body
aboutstring · max: 1000 · nullableOptional
expertisestring · nullableOptional
reasonstring · max: 1000 · nullableOptional
hoursinteger · int64 · max: 4294967295Optional
preferred_ig_idsany · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/mentor/register/
POST /api/v1/dashboard/mentor/register/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 85

{
  "about": "text",
  "expertise": "text",
  "reason": "text",
  "hours": 1,
  "preferred_ig_ids": null
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "about": "text",
    "expertise": "text",
    "reason": "text",
    "hours": 1,
    "preferred_ig_ids": null
  }
}
patch

Update a pending mentor application or resubmit a rejected one.

Authorizations
sessionidstringRequired
Body
aboutstring · max: 1000 · nullableOptional
expertisestring · nullableOptional
reasonstring · max: 1000 · nullableOptional
hoursinteger · int64 · max: 4294967295Optional
preferred_ig_idsany · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/mentor/register/
PATCH /api/v1/dashboard/mentor/register/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 85

{
  "about": "text",
  "expertise": "text",
  "reason": "text",
  "hours": 1,
  "preferred_ig_ids": null
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "about": "text",
    "expertise": "text",
    "reason": "text",
    "hours": 1,
    "preferred_ig_ids": null
  }
}
get

Admin view to list all mentorship sessions.

Authorizations
sessionidstringRequired
Query parameters
ig_idstringOptional
statusstringOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/admin/list/
GET /api/v1/dashboard/mentor/session/admin/list/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "entity_id": "text",
      "entity_name": "text",
      "session_type": "ig_session",
      "title": "text",
      "description": "text",
      "mode": "ONLINE",
      "starts_at": "2026-01-01T00:00:00.000Z",
      "ends_at": "2026-01-01T00:00:00.000Z",
      "status": "REQUESTED",
      "created_by_id": "text",
      "created_by_name": "text",
      "created_at": "2026-01-01T00:00:00.000Z",
      "max_participants": 1,
      "meeting_link": "text",
      "venue": "text",
      "is_recurring": true,
      "parent_session_id": "text",
      "recurrence_type": "DAILY",
      "recurrence_interval": 1,
      "recurrence_end_date": "2026-01-01"
    }
  ]
}
patch

Verify or reject a mentorship session.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Body
statusstring · enumOptional
  • SCHEDULED - SCHEDULED
  • REJECTED - REJECTED
  • CANCELLED - CANCELLED
Possible values:
apply_to_seriesbooleanOptionalDefault: false
Responses
200

No response body

No content

patch/api/v1/dashboard/mentor/session/admin/verify/{session_id}/
PATCH /api/v1/dashboard/mentor/session/admin/verify/{session_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 46

{
  "status": "SCHEDULED",
  "apply_to_series": false
}
200

No response body

No content

get

List all scheduled sessions available to the user — includes IG sessions for their groups and company sessions for linked company orgs.

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/available/
GET /api/v1/dashboard/mentor/session/available/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "entity_id": "text",
      "entity_name": "text",
      "session_type": "ig_session",
      "title": "text",
      "description": "text",
      "mode": "ONLINE",
      "starts_at": "2026-01-01T00:00:00.000Z",
      "ends_at": "2026-01-01T00:00:00.000Z",
      "status": "REQUESTED",
      "created_by_id": "text",
      "created_by_name": "text",
      "created_at": "2026-01-01T00:00:00.000Z",
      "max_participants": 1,
      "meeting_link": "text",
      "venue": "text",
      "is_recurring": true,
      "parent_session_id": "text",
      "recurrence_type": "DAILY",
      "recurrence_interval": 1,
      "recurrence_end_date": "2026-01-01"
    }
  ]
}
post

Create a new mentorship session. For IG mentors, provide an 'ig' field. For company mentors, entity_id and session_type are auto-resolved from the mentor's company org. To create a recurring session, set is_recurring=true, recurrence_type ('DAILY', 'WEEKLY', 'MONTHLY'), recurrence_interval, and recurrence_end_date. This returns the parent session while auto-spawning children.

Authorizations
sessionidstringRequired
Body
idstring · max: 36Optional
entity_idstring · max: 36 · nullableOptional
session_typestring · enumOptional
  • ig_session - IG Session
  • campus_session - Campus Session
  • company_session - Company Session
Possible values:
titlestring · max: 150Required
descriptionstring · nullableOptional
modestring · enumOptional
  • ONLINE - Online
  • OFFLINE - Offline
  • HYBRID - Hybrid
Possible values:
starts_atstring · date-timeRequired
ends_atstring · date-timeRequired
meeting_linkstring · max: 500 · nullableOptional
venuestring · max: 255 · nullableOptional
max_participantsinteger · min: -2147483648 · max: 2147483647 · nullableOptional
is_recurringbooleanOptional
recurrence_typestring · enum · nullableOptional
  • DAILY - Daily
  • WEEKLY - Weekly
  • MONTHLY - Monthly
Possible values:
recurrence_intervalinteger · min: -2147483648 · max: 2147483647 · nullableOptional
recurrence_end_datestring · date · nullableOptional
child_session_idsstringRead-onlyRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/mentor/session/create/
POST /api/v1/dashboard/mentor/session/create/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 351

{
  "id": "text",
  "entity_id": "text",
  "session_type": "ig_session",
  "title": "text",
  "description": "text",
  "mode": "ONLINE",
  "starts_at": "2026-01-01T00:00:00.000Z",
  "ends_at": "2026-01-01T00:00:00.000Z",
  "meeting_link": "text",
  "venue": "text",
  "max_participants": 1,
  "is_recurring": true,
  "recurrence_type": "DAILY",
  "recurrence_interval": 1,
  "recurrence_end_date": "2026-01-01"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "entity_id": "text",
    "session_type": "ig_session",
    "title": "text",
    "description": "text",
    "mode": "ONLINE",
    "starts_at": "2026-01-01T00:00:00.000Z",
    "ends_at": "2026-01-01T00:00:00.000Z",
    "meeting_link": "text",
    "venue": "text",
    "max_participants": 1,
    "is_recurring": true,
    "recurrence_type": "DAILY",
    "recurrence_interval": 1,
    "recurrence_end_date": "2026-01-01",
    "child_session_ids": "text"
  }
}
get

List all sessions created by the logged-in mentor, or get details of a specific session.

Authorizations
sessionidstringRequired
Query parameters
statusstringOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/list/
GET /api/v1/dashboard/mentor/session/list/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "entity_id": "text",
      "entity_name": "text",
      "session_type": "ig_session",
      "title": "text",
      "description": "text",
      "mode": "ONLINE",
      "starts_at": "2026-01-01T00:00:00.000Z",
      "ends_at": "2026-01-01T00:00:00.000Z",
      "status": "REQUESTED",
      "created_by_id": "text",
      "created_by_name": "text",
      "created_at": "2026-01-01T00:00:00.000Z",
      "max_participants": 1,
      "meeting_link": "text",
      "venue": "text",
      "is_recurring": true,
      "parent_session_id": "text",
      "recurrence_type": "DAILY",
      "recurrence_interval": 1,
      "recurrence_end_date": "2026-01-01"
    }
  ]
}
get

List all sessions created by the logged-in mentor, or get details of a specific session.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Query parameters
statusstringOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/list/{session_id}/
GET /api/v1/dashboard/mentor/session/list/{session_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "entity_id": "text",
      "entity_name": "text",
      "session_type": "ig_session",
      "title": "text",
      "description": "text",
      "mode": "ONLINE",
      "starts_at": "2026-01-01T00:00:00.000Z",
      "ends_at": "2026-01-01T00:00:00.000Z",
      "status": "REQUESTED",
      "created_by_id": "text",
      "created_by_name": "text",
      "created_at": "2026-01-01T00:00:00.000Z",
      "max_participants": 1,
      "meeting_link": "text",
      "venue": "text",
      "is_recurring": true,
      "parent_session_id": "text",
      "recurrence_type": "DAILY",
      "recurrence_interval": 1,
      "recurrence_end_date": "2026-01-01"
    }
  ]
}
post

Mentor view to manually add a participant to a specific session using muid.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Body
muidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/mentor/session/participant/add/{session_id}/
POST /api/v1/dashboard/mentor/session/participant/add/{session_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "muid": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "session_id": "text",
    "user_id": "text",
    "user_full_name": "text",
    "mu_id": "text",
    "participant_role": "MENTOR",
    "attendance_status": "INVITED",
    "progress_note": "text",
    "feedback": "text",
    "contributed_minutes": 1,
    "created_at": "2026-01-01T00:00:00.000Z",
    "session_title": "text",
    "session_starts_at": "2026-01-01T00:00:00.000Z",
    "session_ends_at": "2026-01-01T00:00:00.000Z",
    "session_mode": "text",
    "session_meeting_link": "text",
    "session_venue": "text",
    "session_status": "text",
    "session_entity_id": "text",
    "session_entity_name": "text"
  }
}
patch

Allows a user to submit feedback for a session they attended.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Body
feedbackstring · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/mentor/session/participant/feedback/{session_id}/
PATCH /api/v1/dashboard/mentor/session/participant/feedback/{session_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 19

{
  "feedback": "text"
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "session_id": "text",
    "user_id": "text",
    "user_full_name": "text",
    "mu_id": "text",
    "participant_role": "MENTOR",
    "attendance_status": "INVITED",
    "progress_note": "text",
    "feedback": "text",
    "contributed_minutes": 1,
    "created_at": "2026-01-01T00:00:00.000Z",
    "session_title": "text",
    "session_starts_at": "2026-01-01T00:00:00.000Z",
    "session_ends_at": "2026-01-01T00:00:00.000Z",
    "session_mode": "text",
    "session_meeting_link": "text",
    "session_venue": "text",
    "session_status": "text",
    "session_entity_id": "text",
    "session_entity_name": "text"
  }
}
get

List all mentorship sessions the logged-in user has joined.

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/participant/history/
GET /api/v1/dashboard/mentor/session/participant/history/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "session_id": "text",
      "user_id": "text",
      "user_full_name": "text",
      "mu_id": "text",
      "participant_role": "MENTOR",
      "attendance_status": "INVITED",
      "progress_note": "text",
      "feedback": "text",
      "contributed_minutes": 1,
      "created_at": "2026-01-01T00:00:00.000Z",
      "session_title": "text",
      "session_starts_at": "2026-01-01T00:00:00.000Z",
      "session_ends_at": "2026-01-01T00:00:00.000Z",
      "session_mode": "text",
      "session_meeting_link": "text",
      "session_venue": "text",
      "session_status": "text",
      "session_entity_id": "text",
      "session_entity_name": "text"
    }
  ]
}
get

Mentor view to list all participants in a specific session.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/participant/list/{session_id}/
GET /api/v1/dashboard/mentor/session/participant/list/{session_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "session_id": "text",
      "user_id": "text",
      "user_full_name": "text",
      "mu_id": "text",
      "participant_role": "MENTOR",
      "attendance_status": "INVITED",
      "progress_note": "text",
      "feedback": "text",
      "contributed_minutes": 1,
      "created_at": "2026-01-01T00:00:00.000Z",
      "session_title": "text",
      "session_starts_at": "2026-01-01T00:00:00.000Z",
      "session_ends_at": "2026-01-01T00:00:00.000Z",
      "session_mode": "text",
      "session_meeting_link": "text",
      "session_venue": "text",
      "session_status": "text",
      "session_entity_id": "text",
      "session_entity_name": "text"
    }
  ]
}

Mentor view to update participant's attendance and progress.

Authorizations
sessionidstringRequired
Path parameters
link_idstringRequired
Body
attendance_statusstring · enumOptional
  • INVITED - Invited
  • ATTENDED - Attended
  • ABSENT - Absent
Possible values:
progress_notestring · max: 500 · nullableOptional
contributed_minutesinteger · min: -2147483648 · max: 2147483647 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/mentor/session/participant/update/{link_id}/
PATCH /api/v1/dashboard/mentor/session/participant/update/{link_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 78

{
  "attendance_status": "INVITED",
  "progress_note": "text",
  "contributed_minutes": 1
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "attendance_status": "INVITED",
    "progress_note": "text",
    "contributed_minutes": 1
  }
}
post

Allows a MuLearn user to join a scheduled mentorship session.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/mentor/session/participation/join/{session_id}/
POST /api/v1/dashboard/mentor/session/participation/join/{session_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "session_id": "text",
    "user_id": "text",
    "user_full_name": "text",
    "mu_id": "text",
    "participant_role": "MENTOR",
    "attendance_status": "INVITED",
    "progress_note": "text",
    "feedback": "text",
    "contributed_minutes": 1,
    "created_at": "2026-01-01T00:00:00.000Z",
    "session_title": "text",
    "session_starts_at": "2026-01-01T00:00:00.000Z",
    "session_ends_at": "2026-01-01T00:00:00.000Z",
    "session_mode": "text",
    "session_meeting_link": "text",
    "session_venue": "text",
    "session_status": "text",
    "session_entity_id": "text",
    "session_entity_name": "text"
  }
}
get

List all pending student session requests that are within the logged-in mentor's scope (their assigned IGs, campus, or company).

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/student-requests/
GET /api/v1/dashboard/mentor/session/student-requests/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "session_type": "ig_session",
      "entity_id": "text",
      "entity_name": "text",
      "title": "text",
      "description": "text",
      "mode": "ONLINE",
      "starts_at": "2026-01-01T00:00:00.000Z",
      "ends_at": "2026-01-01T00:00:00.000Z",
      "meeting_link": "text",
      "venue": "text",
      "max_participants": 1,
      "status": "REQUESTED",
      "requested_by_id": "text",
      "requested_by_name": "text",
      "requested_by_muid": "text",
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
patch

Approve or reject a student's session request. Only mentors whose scope covers the session's entity may act on it. When approving, optional overrides for starts_at, ends_at, mode, meeting_link, and venue allow the mentor to adjust logistics.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Body

Allows a mentor to approve or reject a student's session request.

On APPROVE:

  • Optional overrides (starts_at, ends_at, mode, meeting_link, venue) are applied so the mentor can adjust the proposed time / logistics.
  • The session transitions from REQUESTED → PENDING_APPROVAL.
  • created_by is updated to the approving mentor so the session appears in their dashboard and they can edit/cancel it using existing APIs.
  • requested_by is left untouched — permanent audit trail.

On REJECT:

  • The session transitions from REQUESTED → REJECTED.
  • requested_by remains set; the student can view their rejected requests.
statusstring · enumOptional
  • APPROVED - APPROVED
  • REJECTED - REJECTED
Possible values:
starts_atstring · date-time · nullableOptional
ends_atstring · date-time · nullableOptional
modestring · enum · nullableOptional
  • ONLINE - Online
  • OFFLINE - Offline
  • HYBRID - Hybrid
Possible values:
meeting_linkstring · nullableOptional
venuestring · nullableOptional
Responses
200

No response body

No content

patch/api/v1/dashboard/mentor/session/student-requests/{session_id}/verify/
PATCH /api/v1/dashboard/mentor/session/student-requests/{session_id}/verify/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 150

{
  "status": "APPROVED",
  "starts_at": "2026-01-01T00:00:00.000Z",
  "ends_at": "2026-01-01T00:00:00.000Z",
  "mode": "ONLINE",
  "meeting_link": "text",
  "venue": "text"
}
200

No response body

No content

get

List all session requests made by the logged-in student.

Authorizations
sessionidstringRequired
Query parameters
statusstringOptional

Filter by status: REQUESTED, PENDING_APPROVAL, REJECTED, etc.

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/session/student/my-requests/
GET /api/v1/dashboard/mentor/session/student/my-requests/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "session_type": "ig_session",
      "entity_id": "text",
      "entity_name": "text",
      "title": "text",
      "description": "text",
      "mode": "ONLINE",
      "starts_at": "2026-01-01T00:00:00.000Z",
      "ends_at": "2026-01-01T00:00:00.000Z",
      "meeting_link": "text",
      "venue": "text",
      "max_participants": 1,
      "status": "REQUESTED",
      "requested_by_id": "text",
      "requested_by_name": "text",
      "requested_by_muid": "text",
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ]
}
post

Request a mentorship session from the mentor(s) of a campus, company, or IG. The student must be a verified member of the target entity. The session starts in REQUESTED status and waits for a mentor to approve or reject it.

Authorizations
sessionidstringRequired
Body

Used by students to create a session request.

All sessions are Interest-Group scoped, so only ig_session requests are accepted; company/campus session types are rejected.

Validates:

  • The session_type is ig_session and the student is a member of the target Interest Group (entity_id).
  • Time constraints (starts_at < ends_at, starts_at in future).
  • Mode / venue / meeting-link consistency (same rules as SessionCreateSerializer).
  • No duplicate pending request (same student + entity + title + starts_at).
idstring · max: 36Optional
session_typestring · enumOptional
  • ig_session - IG Session
  • campus_session - Campus Session
  • company_session - Company Session
Possible values:
entity_idstring · max: 36 · nullableOptional
titlestring · max: 150Required
descriptionstring · nullableOptional
modestring · enumOptional
  • ONLINE - Online
  • OFFLINE - Offline
  • HYBRID - Hybrid
Possible values:
starts_atstring · date-timeRequired
ends_atstring · date-timeRequired
meeting_linkstring · max: 500 · nullableOptional
venuestring · max: 255 · nullableOptional
max_participantsinteger · min: -2147483648 · max: 2147483647 · nullableOptional
Responses
201Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
post/api/v1/dashboard/mentor/session/student/request/
POST /api/v1/dashboard/mentor/session/student/request/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 246

{
  "id": "text",
  "session_type": "ig_session",
  "entity_id": "text",
  "title": "text",
  "description": "text",
  "mode": "ONLINE",
  "starts_at": "2026-01-01T00:00:00.000Z",
  "ends_at": "2026-01-01T00:00:00.000Z",
  "meeting_link": "text",
  "venue": "text",
  "max_participants": 1
}
201Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "session_type": "ig_session",
    "entity_id": "text",
    "title": "text",
    "description": "text",
    "mode": "ONLINE",
    "starts_at": "2026-01-01T00:00:00.000Z",
    "ends_at": "2026-01-01T00:00:00.000Z",
    "meeting_link": "text",
    "venue": "text",
    "max_participants": 1
  }
}
delete

Delete a mentorship session.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Responses
204

No response body

No content

delete/api/v1/dashboard/mentor/session/update/{session_id}/
DELETE /api/v1/dashboard/mentor/session/update/{session_id}/ HTTP/1.1
Accept: */*
204

No response body

No content

patch

Update or cancel a mentorship session.

Authorizations
sessionidstringRequired
Path parameters
session_idstringRequired
Body
titlestring · max: 150Optional
descriptionstring · nullableOptional
modestring · enumOptional
  • ONLINE - Online
  • OFFLINE - Offline
  • HYBRID - Hybrid
Possible values:
starts_atstring · date-timeOptional
ends_atstring · date-timeOptional
meeting_linkstring · max: 500 · nullableOptional
venuestring · max: 255 · nullableOptional
max_participantsinteger · min: -2147483648 · max: 2147483647 · nullableOptional
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
patch/api/v1/dashboard/mentor/session/update/{session_id}/
PATCH /api/v1/dashboard/mentor/session/update/{session_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 187

{
  "title": "text",
  "description": "text",
  "mode": "ONLINE",
  "starts_at": "2026-01-01T00:00:00.000Z",
  "ends_at": "2026-01-01T00:00:00.000Z",
  "meeting_link": "text",
  "venue": "text",
  "max_participants": 1
}
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "title": "text",
    "description": "text",
    "mode": "ONLINE",
    "starts_at": "2026-01-01T00:00:00.000Z",
    "ends_at": "2026-01-01T00:00:00.000Z",
    "meeting_link": "text",
    "venue": "text",
    "max_participants": 1
  }
}
get

Check the status of a mentor registration.

Authorizations
sessionidstringRequired
Responses
200

No response body

No content

get/api/v1/dashboard/mentor/status/
GET /api/v1/dashboard/mentor/status/ HTTP/1.1
Accept: */*
200

No response body

No content

get

List all tasks submitted by the authenticated mentor (filtered by requested_by). Supports pagination, search, and sort.

Authorizations
sessionidstringRequired
Query parameters
approval_statusstringOptional

Filter by approval_status: pending | approved | rejected

Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/tasks/
GET /api/v1/dashboard/mentor/tasks/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "data": [
      {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      }
    ],
    "pagination": {
      "ANY_ADDITIONAL_PROPERTY": "anything"
    }
  }
}
post

Create a new task for an IG the mentor belongs to. The task is saved with approval_status='pending' and active=False until an admin approves it. Accepts an optional skill_ids list (array of active skill UUIDs) alongside the task fields — mirrors admin task creation behaviour.

Authorizations
sessionidstringRequired
Body

Mirrors admin TaskModifySerializer field-for-field. Locked fields (active, approval_status, requested_by, requested_at) are injected by the view via serializer.save(**overrides).

hashtagstring · max: 75Required
titlestring · max: 75Required
karmainteger · min: -2147483648 · max: 2147483647 · nullableOptional
usage_countinteger · min: -2147483648 · max: 2147483647Optional
descriptionstring · nullableOptional
typestringRequired
levelstring · nullableOptional
igstringRequired
created_bystringRequired
updated_bystringRequired
Responses
200

Task submitted for approval.

No content

post/api/v1/dashboard/mentor/tasks/
POST /api/v1/dashboard/mentor/tasks/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 161

{
  "hashtag": "text",
  "title": "text",
  "karma": 1,
  "usage_count": 1,
  "description": "text",
  "type": "text",
  "level": "text",
  "ig": "text",
  "created_by": "text",
  "updated_by": "text"
}
200

Task submitted for approval.

No content

get

Retrieve the detail of a specific task submitted by the mentor.

Authorizations
sessionidstringRequired
Path parameters
task_idstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/tasks/{task_id}/
GET /api/v1/dashboard/mentor/tasks/{task_id}/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": {
    "id": "text",
    "hashtag": "text",
    "discord_link": "text",
    "title": "text",
    "description": "text",
    "karma": 1,
    "channel": "text",
    "type": "text",
    "active": true,
    "variable_karma": true,
    "usage_count": 1,
    "level": "text",
    "org": "text",
    "ig": "text",
    "event": "text",
    "bonus_karma": 1,
    "bonus_time": "2026-01-01T00:00:00.000Z",
    "approval_status": "approved",
    "rejection_reason": "text",
    "reviewed_at": "2026-01-01T00:00:00.000Z",
    "requested_by_name": "text",
    "requested_at": "2026-01-01T00:00:00.000Z",
    "skills": "text",
    "created_at": "2026-01-01T00:00:00.000Z",
    "updated_at": "2026-01-01T00:00:00.000Z"
  }
}
put

Update a task submitted by the mentor. Regardless of the current approval_status, the task reverts to 'pending' and active=False after editing (triggering re-approval). If the task was previously approved, it is deactivated until re-approved. Accepts optional skill_ids to replace the current skill links.

Authorizations
sessionidstringRequired
Path parameters
task_idstringRequired
Body

Partial update serializer — same writable fields as create. The view injects approval_status / active / review-reset fields via save().

hashtagstring · max: 75Required
titlestring · max: 75Required
karmainteger · min: -2147483648 · max: 2147483647 · nullableOptional
usage_countinteger · min: -2147483648 · max: 2147483647Optional
descriptionstring · nullableOptional
typestringRequired
levelstring · nullableOptional
igstring · nullableOptional
updated_bystringRequired
Responses
200

Task updated and re-submitted for approval.

No content

put/api/v1/dashboard/mentor/tasks/{task_id}/
PUT /api/v1/dashboard/mentor/tasks/{task_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 141

{
  "hashtag": "text",
  "title": "text",
  "karma": 1,
  "usage_count": 1,
  "description": "text",
  "type": "text",
  "level": "text",
  "ig": "text",
  "updated_by": "text"
}
200

Task updated and re-submitted for approval.

No content

delete

Delete a task submitted by the mentor. Only allowed when approval_status is 'pending'. Approved or rejected tasks cannot be deleted.

Authorizations
sessionidstringRequired
Path parameters
task_idstringRequired
Responses
200

Task deleted successfully.

No content

delete/api/v1/dashboard/mentor/tasks/{task_id}/
DELETE /api/v1/dashboard/mentor/tasks/{task_id}/ HTTP/1.1
Accept: */*
200

Task deleted successfully.

No content

get

Returns only the Interest Groups the authenticated mentor belongs to (active MENTOR assignment). Use this list to populate the IG selector when creating a task.

Authorizations
sessionidstringRequired
Responses
200Success
application/json
hasErrorbooleanRequiredDefault: falseExample: false
statusCodeintegerRequiredDefault: 200Example: 200
get/api/v1/dashboard/mentor/tasks/ig-dropdown/
GET /api/v1/dashboard/mentor/tasks/ig-dropdown/ HTTP/1.1
Accept: */*
200Success
{
  "hasError": false,
  "statusCode": 200,
  "message": {
    "general": [
      "text"
    ]
  },
  "response": [
    {
      "id": "text",
      "name": "text"
    }
  ]
}
patch

Verify or reject a mentor application. Platform admins can verify any application; a Company's owner can verify COMPANY_MENTOR applications scoped to their own company.

Authorizations
sessionidstringRequired
Path parameters
mentor_idstringRequired
Body
statusstring · enumOptional
  • APPROVED - APPROVED
  • REJECTED - REJECTED
Possible values:
verification_notestringOptional
Responses
200

No response body

No content

patch/api/v1/dashboard/mentor/verify/{mentor_id}/
PATCH /api/v1/dashboard/mentor/verify/{mentor_id}/ HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 48

{
  "status": "APPROVED",
  "verification_note": "text"
}
200

No response body

No content

Last updated

Was this helpful?