> For the complete documentation index, see [llms.txt](https://docs.mulearn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mulearn.org/api-reference/mentor.md).

# Mentor

## GET /api/v1/dashboard/mentor/{mentor\_id}/grants/

> List all scope grants for a mentor.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorScopeGrant":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"scope_type":{"enum":["COMPANY_MENTOR","IG_MENTOR","CAMPUS_MENTOR","MENTOR"],"type":"string","description":"* `COMPANY_MENTOR` - Company Mentor\n* `IG_MENTOR` - IG Mentor\n* `CAMPUS_MENTOR` - Campus Mentor\n* `MENTOR` - Mentor"},"scope_id":{"type":"string","nullable":true,"maxLength":36},"is_active":{"type":"boolean"},"granted_by_name":{"type":"string","readOnly":true},"granted_at":{"type":"string","format":"date-time"},"revoked_by_name":{"type":"string","readOnly":true},"revoked_at":{"type":"string","format":"date-time","nullable":true}},"required":["granted_at","granted_by_name","revoked_by_name","scope_type"]}}},"paths":{"/api/v1/dashboard/mentor/{mentor_id}/grants/":{"get":{"operationId":"dashboard_mentor_grants_list","description":"List all scope grants for a mentor.","parameters":[{"in":"path","name":"mentor_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/MentorScopeGrant"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/mentor/{mentor\_id}/grants/{grant\_id}/

> Revoke a single mentor scope grant.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/{mentor_id}/grants/{grant_id}/":{"delete":{"operationId":"dashboard_mentor_grants_destroy","description":"Revoke a single mentor scope grant.","parameters":[{"in":"path","name":"grant_id","schema":{"type":"string"},"required":true},{"in":"path","name":"mentor_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"description":"No response body"}}}}}}
```

## GET /api/v1/dashboard/mentor/activity/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorActivity":{"type":"object","properties":{"id":{"type":"string"},"activity_type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string","nullable":true},"date":{"type":"string","format":"date-time"},"status":{"type":"string","nullable":true}},"required":["activity_type","date","id","title"]}}},"paths":{"/api/v1/dashboard/mentor/activity/":{"get":{"operationId":"dashboard_mentor_activity_list","description":"Get recent activity of the currently logged-in mentor (sessions created, tasks appraised).","tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/MentorActivity"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/admin/assign/

> Admin-only endpoint for bulk assigning / revoking mentor status.\
> \
> POST  /api/v1/mentor/admin/assign/\
> &#x20;   Body: { user\_muids, mentor\_tier, \[org\_id], \[ig\_ids], \[about], \[expertise], \[hours] }\
> &#x20;   Assigns all listed users as mentors atomically.\
> \
> DELETE /api/v1/mentor/admin/assign/\<user\_muid>/\
> &#x20;   Revokes mentor assignment for the given user.\
> &#x20;   Optional query param ?mentor\_tier=\<tier> scopes revocation to a single tier.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/admin/assign/":{"post":{"operationId":"dashboard_mentor_admin_assign_create","description":"Admin-only endpoint for bulk assigning / revoking mentor status.\n\nPOST  /api/v1/mentor/admin/assign/\n    Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] }\n    Assigns all listed users as mentors atomically.\n\nDELETE /api/v1/mentor/admin/assign/<user_muid>/\n    Revokes mentor assignment for the given user.\n    Optional query param ?mentor_tier=<tier> scopes revocation to a single tier.","tags":["Mentor"],"responses":{"200":{"description":"No response body"}}}}}}
```

## DELETE /api/v1/dashboard/mentor/admin/assign/

> Admin-only endpoint for bulk assigning / revoking mentor status.\
> \
> POST  /api/v1/mentor/admin/assign/\
> &#x20;   Body: { user\_muids, mentor\_tier, \[org\_id], \[ig\_ids], \[about], \[expertise], \[hours] }\
> &#x20;   Assigns all listed users as mentors atomically.\
> \
> DELETE /api/v1/mentor/admin/assign/\<user\_muid>/\
> &#x20;   Revokes mentor assignment for the given user.\
> &#x20;   Optional query param ?mentor\_tier=\<tier> scopes revocation to a single tier.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/admin/assign/":{"delete":{"operationId":"dashboard_mentor_admin_assign_destroy","description":"Admin-only endpoint for bulk assigning / revoking mentor status.\n\nPOST  /api/v1/mentor/admin/assign/\n    Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] }\n    Assigns all listed users as mentors atomically.\n\nDELETE /api/v1/mentor/admin/assign/<user_muid>/\n    Revokes mentor assignment for the given user.\n    Optional query param ?mentor_tier=<tier> scopes revocation to a single tier.","tags":["Mentor"],"responses":{"204":{"description":"No response body"}}}}}}
```

## POST /api/v1/dashboard/mentor/admin/assign/{user\_muid}/

> Admin-only endpoint for bulk assigning / revoking mentor status.\
> \
> POST  /api/v1/mentor/admin/assign/\
> &#x20;   Body: { user\_muids, mentor\_tier, \[org\_id], \[ig\_ids], \[about], \[expertise], \[hours] }\
> &#x20;   Assigns all listed users as mentors atomically.\
> \
> DELETE /api/v1/mentor/admin/assign/\<user\_muid>/\
> &#x20;   Revokes mentor assignment for the given user.\
> &#x20;   Optional query param ?mentor\_tier=\<tier> scopes revocation to a single tier.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/admin/assign/{user_muid}/":{"post":{"operationId":"dashboard_mentor_admin_assign_create_2","description":"Admin-only endpoint for bulk assigning / revoking mentor status.\n\nPOST  /api/v1/mentor/admin/assign/\n    Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] }\n    Assigns all listed users as mentors atomically.\n\nDELETE /api/v1/mentor/admin/assign/<user_muid>/\n    Revokes mentor assignment for the given user.\n    Optional query param ?mentor_tier=<tier> scopes revocation to a single tier.","parameters":[{"in":"path","name":"user_muid","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"description":"No response body"}}}}}}
```

## DELETE /api/v1/dashboard/mentor/admin/assign/{user\_muid}/

> Admin-only endpoint for bulk assigning / revoking mentor status.\
> \
> POST  /api/v1/mentor/admin/assign/\
> &#x20;   Body: { user\_muids, mentor\_tier, \[org\_id], \[ig\_ids], \[about], \[expertise], \[hours] }\
> &#x20;   Assigns all listed users as mentors atomically.\
> \
> DELETE /api/v1/mentor/admin/assign/\<user\_muid>/\
> &#x20;   Revokes mentor assignment for the given user.\
> &#x20;   Optional query param ?mentor\_tier=\<tier> scopes revocation to a single tier.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/admin/assign/{user_muid}/":{"delete":{"operationId":"dashboard_mentor_admin_assign_destroy_2","description":"Admin-only endpoint for bulk assigning / revoking mentor status.\n\nPOST  /api/v1/mentor/admin/assign/\n    Body: { user_muids, mentor_tier, [org_id], [ig_ids], [about], [expertise], [hours] }\n    Assigns all listed users as mentors atomically.\n\nDELETE /api/v1/mentor/admin/assign/<user_muid>/\n    Revokes mentor assignment for the given user.\n    Optional query param ?mentor_tier=<tier> scopes revocation to a single tier.","parameters":[{"in":"path","name":"user_muid","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"204":{"description":"No response body"}}}}}}
```

## GET /api/v1/dashboard/mentor/availability/

> List all availability slots for the logged-in mentor.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"AvailabilitySlot":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"mentor_user_id":{"type":"string","readOnly":true},"ig_id":{"type":"string","nullable":true,"readOnly":true},"ig_name":{"type":"string","readOnly":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","end_time","ig_id","ig_name","mentor_user_id","start_time","updated_at","weekday"]}}},"paths":{"/api/v1/dashboard/mentor/availability/":{"get":{"operationId":"dashboard_mentor_availability_list","description":"List all availability slots for the logged-in mentor.","parameters":[{"in":"query","name":"ig_id","schema":{"type":"string"}},{"in":"query","name":"is_active","schema":{"type":"boolean"}}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilitySlot"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/availability/

> Create a new mentor availability slot.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"AvailabilitySlotCreateUpdate":{"type":"object","properties":{"ig":{"type":"string","nullable":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true}},"required":["end_time","start_time","weekday"]}}},"paths":{"/api/v1/dashboard/mentor/availability/":{"post":{"operationId":"dashboard_mentor_availability_create","description":"Create a new mentor availability slot.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/mentor/availability/

> Delete a mentor availability slot.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/availability/":{"delete":{"operationId":"dashboard_mentor_availability_destroy","description":"Delete a mentor availability slot.","tags":["Mentor"],"responses":{"204":{"description":"No response body"}}}}}}
```

## PATCH /api/v1/dashboard/mentor/availability/

> Update an existing mentor availability slot.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedAvailabilitySlotCreateUpdate":{"type":"object","properties":{"ig":{"type":"string","nullable":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true}}},"AvailabilitySlotCreateUpdate":{"type":"object","properties":{"ig":{"type":"string","nullable":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true}},"required":["end_time","start_time","weekday"]}}},"paths":{"/api/v1/dashboard/mentor/availability/":{"patch":{"operationId":"dashboard_mentor_availability_partial_update","description":"Update an existing mentor availability slot.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedAvailabilitySlotCreateUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedAvailabilitySlotCreateUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedAvailabilitySlotCreateUpdate"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/availability/{slot\_id}/

> List all availability slots for the logged-in mentor.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"AvailabilitySlot":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"mentor_user_id":{"type":"string","readOnly":true},"ig_id":{"type":"string","nullable":true,"readOnly":true},"ig_name":{"type":"string","readOnly":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","end_time","ig_id","ig_name","mentor_user_id","start_time","updated_at","weekday"]}}},"paths":{"/api/v1/dashboard/mentor/availability/{slot_id}/":{"get":{"operationId":"dashboard_mentor_availability_list_2","description":"List all availability slots for the logged-in mentor.","parameters":[{"in":"query","name":"ig_id","schema":{"type":"string"}},{"in":"query","name":"is_active","schema":{"type":"boolean"}},{"in":"path","name":"slot_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilitySlot"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/availability/{slot\_id}/

> Create a new mentor availability slot.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"AvailabilitySlotCreateUpdate":{"type":"object","properties":{"ig":{"type":"string","nullable":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true}},"required":["end_time","start_time","weekday"]}}},"paths":{"/api/v1/dashboard/mentor/availability/{slot_id}/":{"post":{"operationId":"dashboard_mentor_availability_create_2","description":"Create a new mentor availability slot.","parameters":[{"in":"path","name":"slot_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/mentor/availability/{slot\_id}/

> Delete a mentor availability slot.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/availability/{slot_id}/":{"delete":{"operationId":"dashboard_mentor_availability_destroy_2","description":"Delete a mentor availability slot.","parameters":[{"in":"path","name":"slot_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"204":{"description":"No response body"}}}}}}
```

## PATCH /api/v1/dashboard/mentor/availability/{slot\_id}/

> Update an existing mentor availability slot.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedAvailabilitySlotCreateUpdate":{"type":"object","properties":{"ig":{"type":"string","nullable":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true}}},"AvailabilitySlotCreateUpdate":{"type":"object","properties":{"ig":{"type":"string","nullable":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true}},"required":["end_time","start_time","weekday"]}}},"paths":{"/api/v1/dashboard/mentor/availability/{slot_id}/":{"patch":{"operationId":"dashboard_mentor_availability_partial_update_2","description":"Update an existing mentor availability slot.","parameters":[{"in":"path","name":"slot_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedAvailabilitySlotCreateUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedAvailabilitySlotCreateUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedAvailabilitySlotCreateUpdate"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/AvailabilitySlotCreateUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/detail/{mentor\_id}/

> Get details of a specific mentor by ID.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorDetail":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"user":{"type":"string"},"user_full_name":{"type":"string","readOnly":true},"user_email":{"type":"string","readOnly":true},"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"mentor_tier":{"enum":["IG_MENTOR","MENTOR","COMPANY_MENTOR","CAMPUS_MENTOR"],"type":"string","description":"* `IG_MENTOR` - IG Mentor\n* `MENTOR` - Mentor\n* `COMPANY_MENTOR` - Company Mentor\n* `CAMPUS_MENTOR` - Campus Mentor"},"status":{"enum":["PENDING","APPROVED","REJECTED"],"type":"string","description":"* `PENDING` - Pending\n* `APPROVED` - Approved\n* `REJECTED` - Rejected"},"preferred_ig_ids":{"nullable":true},"org":{"type":"string","nullable":true},"verified_by":{"type":"string","nullable":true},"verified_at":{"type":"string","format":"date-time","nullable":true},"company":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}},"required":["company","user","user_email","user_full_name"]}}},"paths":{"/api/v1/dashboard/mentor/detail/{mentor_id}/":{"get":{"operationId":"dashboard_mentor_detail_retrieve","description":"Get details of a specific mentor by ID.","parameters":[{"in":"path","name":"mentor_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorDetail"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/list/

> List all mentor applications with filtering.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"user_id":{"type":"string","readOnly":true},"user_full_name":{"type":"string","readOnly":true},"user_email":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"verification_note":{"type":"string","nullable":true,"maxLength":500},"verified_at":{"type":"string","format":"date-time","nullable":true},"mentor_tier":{"enum":["IG_MENTOR","MENTOR","COMPANY_MENTOR","CAMPUS_MENTOR"],"type":"string","description":"* `IG_MENTOR` - IG Mentor\n* `MENTOR` - Mentor\n* `COMPANY_MENTOR` - Company Mentor\n* `CAMPUS_MENTOR` - Campus Mentor"},"status":{"enum":["PENDING","APPROVED","REJECTED"],"type":"string","description":"* `PENDING` - Pending\n* `APPROVED` - Approved\n* `REJECTED` - Rejected"},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}},"required":["muid","user_email","user_full_name","user_id"]}}},"paths":{"/api/v1/dashboard/mentor/list/":{"get":{"operationId":"dashboard_mentor_list_list","description":"List all mentor applications with filtering.","parameters":[{"in":"query","name":"mentor_tier","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/MentorList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/overview/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorOverviewData":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/MentorScopeMetrics"}}},"required":["scopes"]},"MentorScopeMetrics":{"type":"object","properties":{"scope_type":{"type":"string"},"scope_id":{"type":"string"},"scope_name":{"type":"string","nullable":true},"metrics":{"type":"object","additionalProperties":{}}},"required":["metrics","scope_id","scope_name","scope_type"]}}},"paths":{"/api/v1/dashboard/mentor/overview/":{"get":{"operationId":"dashboard_mentor_overview_retrieve","description":"Retrieve an overview dashboard of metrics aggregated dynamically based on the authenticated mentor's active scopes (Campus, Company, IG).","tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorOverviewData"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/profile/

> Retrieve the profile of a verified mentor.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorDetail":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"user":{"type":"string"},"user_full_name":{"type":"string","readOnly":true},"user_email":{"type":"string","readOnly":true},"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"mentor_tier":{"enum":["IG_MENTOR","MENTOR","COMPANY_MENTOR","CAMPUS_MENTOR"],"type":"string","description":"* `IG_MENTOR` - IG Mentor\n* `MENTOR` - Mentor\n* `COMPANY_MENTOR` - Company Mentor\n* `CAMPUS_MENTOR` - Campus Mentor"},"status":{"enum":["PENDING","APPROVED","REJECTED"],"type":"string","description":"* `PENDING` - Pending\n* `APPROVED` - Approved\n* `REJECTED` - Rejected"},"preferred_ig_ids":{"nullable":true},"org":{"type":"string","nullable":true},"verified_by":{"type":"string","nullable":true},"verified_at":{"type":"string","format":"date-time","nullable":true},"company":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}},"required":["company","user","user_email","user_full_name"]}}},"paths":{"/api/v1/dashboard/mentor/profile/":{"get":{"operationId":"dashboard_mentor_profile_retrieve","description":"Retrieve the profile of a verified mentor.","tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorDetail"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/mentor/profile/

> Update the profile of a verified mentor.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedMentorUpdate":{"type":"object","properties":{"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"preferred_ig_ids":{"nullable":true}}},"MentorUpdate":{"type":"object","properties":{"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"preferred_ig_ids":{"nullable":true}}}}},"paths":{"/api/v1/dashboard/mentor/profile/":{"patch":{"operationId":"dashboard_mentor_profile_partial_update","description":"Update the profile of a verified mentor.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedMentorUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedMentorUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedMentorUpdate"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/public/availability/{mentor\_id}/

> List active availability slots for a specific mentor.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"AvailabilitySlot":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"mentor_user_id":{"type":"string","readOnly":true},"ig_id":{"type":"string","nullable":true,"readOnly":true},"ig_name":{"type":"string","readOnly":true},"weekday":{"type":"integer","maximum":32767,"minimum":-32768},"start_time":{"type":"string","format":"time"},"end_time":{"type":"string","format":"time"},"timezone":{"type":"string","maxLength":64},"is_active":{"type":"boolean"},"valid_from":{"type":"string","format":"date","nullable":true},"valid_to":{"type":"string","format":"date","nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","end_time","ig_id","ig_name","mentor_user_id","start_time","updated_at","weekday"]}}},"paths":{"/api/v1/dashboard/mentor/public/availability/{mentor_id}/":{"get":{"operationId":"dashboard_mentor_public_availability_list","description":"List active availability slots for a specific mentor.","parameters":[{"in":"path","name":"mentor_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/AvailabilitySlot"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/public/profile/{mentor\_id}/

> View a mentor's profile publicly.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorDetail":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"user":{"type":"string"},"user_full_name":{"type":"string","readOnly":true},"user_email":{"type":"string","readOnly":true},"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"mentor_tier":{"enum":["IG_MENTOR","MENTOR","COMPANY_MENTOR","CAMPUS_MENTOR"],"type":"string","description":"* `IG_MENTOR` - IG Mentor\n* `MENTOR` - Mentor\n* `COMPANY_MENTOR` - Company Mentor\n* `CAMPUS_MENTOR` - Campus Mentor"},"status":{"enum":["PENDING","APPROVED","REJECTED"],"type":"string","description":"* `PENDING` - Pending\n* `APPROVED` - Approved\n* `REJECTED` - Rejected"},"preferred_ig_ids":{"nullable":true},"org":{"type":"string","nullable":true},"verified_by":{"type":"string","nullable":true},"verified_at":{"type":"string","format":"date-time","nullable":true},"company":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true}},"required":["company","user","user_email","user_full_name"]}}},"paths":{"/api/v1/dashboard/mentor/public/profile/{mentor_id}/":{"get":{"operationId":"dashboard_mentor_public_profile_retrieve","description":"View a mentor's profile publicly.","parameters":[{"in":"path","name":"mentor_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorDetail"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/register/

> Submit a new mentor registration.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorRegister":{"type":"object","properties":{"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"preferred_ig_ids":{"nullable":true}}}}},"paths":{"/api/v1/dashboard/mentor/register/":{"post":{"operationId":"dashboard_mentor_register_create","description":"Submit a new mentor registration.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MentorRegister"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/MentorRegister"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MentorRegister"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorRegister"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/mentor/register/

> Update a pending mentor application or resubmit a rejected one.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedMentorUpdate":{"type":"object","properties":{"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"preferred_ig_ids":{"nullable":true}}},"MentorUpdate":{"type":"object","properties":{"about":{"type":"string","nullable":true,"maxLength":1000},"expertise":{"type":"string","nullable":true},"reason":{"type":"string","nullable":true,"maxLength":1000},"hours":{"type":"integer","maximum":4294967295,"minimum":0,"format":"int64"},"preferred_ig_ids":{"nullable":true}}}}},"paths":{"/api/v1/dashboard/mentor/register/":{"patch":{"operationId":"dashboard_mentor_register_partial_update","description":"Update a pending mentor application or resubmit a rejected one.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedMentorUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedMentorUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedMentorUpdate"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/session/admin/list/

> Admin view to list all mentorship sessions.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"SessionList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"entity_id":{"type":"string","nullable":true,"maxLength":36},"entity_name":{"type":"string","readOnly":true},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"status":{"enum":["REQUESTED","SCHEDULED","PENDING_APPROVAL","COMPLETED","CANCELLED","REJECTED"],"type":"string","description":"* `REQUESTED` - Requested\n* `SCHEDULED` - Scheduled\n* `PENDING_APPROVAL` - Pending Approval\n* `COMPLETED` - Completed\n* `CANCELLED` - Cancelled\n* `REJECTED` - Rejected"},"created_by_id":{"type":"string","readOnly":true},"created_by_name":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"is_recurring":{"type":"boolean"},"parent_session_id":{"type":"string","readOnly":true,"nullable":true},"recurrence_type":{"enum":["DAILY","WEEKLY","MONTHLY","",null],"type":"string","description":"* `DAILY` - Daily\n* `WEEKLY` - Weekly\n* `MONTHLY` - Monthly","nullable":true},"recurrence_interval":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"recurrence_end_date":{"type":"string","format":"date","nullable":true}},"required":["created_at","created_by_id","created_by_name","ends_at","entity_name","parent_session_id","starts_at","status","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/admin/list/":{"get":{"operationId":"dashboard_mentor_session_admin_list_list","description":"Admin view to list all mentorship sessions.","parameters":[{"in":"query","name":"ig_id","schema":{"type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/SessionList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/mentor/session/admin/verify/{session\_id}/

> Verify or reject a mentorship session.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedAdminSessionVerify":{"type":"object","properties":{"status":{"enum":["SCHEDULED","REJECTED","CANCELLED"],"type":"string","description":"* `SCHEDULED` - SCHEDULED\n* `REJECTED` - REJECTED\n* `CANCELLED` - CANCELLED"},"apply_to_series":{"type":"boolean","default":false}}}}},"paths":{"/api/v1/dashboard/mentor/session/admin/verify/{session_id}/":{"patch":{"operationId":"dashboard_mentor_session_admin_verify_partial_update","description":"Verify or reject a mentorship session.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedAdminSessionVerify"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedAdminSessionVerify"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedAdminSessionVerify"}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## GET /api/v1/dashboard/mentor/session/available/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"SessionList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"entity_id":{"type":"string","nullable":true,"maxLength":36},"entity_name":{"type":"string","readOnly":true},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"status":{"enum":["REQUESTED","SCHEDULED","PENDING_APPROVAL","COMPLETED","CANCELLED","REJECTED"],"type":"string","description":"* `REQUESTED` - Requested\n* `SCHEDULED` - Scheduled\n* `PENDING_APPROVAL` - Pending Approval\n* `COMPLETED` - Completed\n* `CANCELLED` - Cancelled\n* `REJECTED` - Rejected"},"created_by_id":{"type":"string","readOnly":true},"created_by_name":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"is_recurring":{"type":"boolean"},"parent_session_id":{"type":"string","readOnly":true,"nullable":true},"recurrence_type":{"enum":["DAILY","WEEKLY","MONTHLY","",null],"type":"string","description":"* `DAILY` - Daily\n* `WEEKLY` - Weekly\n* `MONTHLY` - Monthly","nullable":true},"recurrence_interval":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"recurrence_end_date":{"type":"string","format":"date","nullable":true}},"required":["created_at","created_by_id","created_by_name","ends_at","entity_name","parent_session_id","starts_at","status","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/available/":{"get":{"operationId":"dashboard_mentor_session_available_list","description":"List all scheduled sessions available to the user — includes IG sessions for their groups and company sessions for linked company orgs.","tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/SessionList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/session/create/

> 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.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"SessionCreate":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"entity_id":{"type":"string","nullable":true,"maxLength":36},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"is_recurring":{"type":"boolean"},"recurrence_type":{"enum":["DAILY","WEEKLY","MONTHLY","",null],"type":"string","description":"* `DAILY` - Daily\n* `WEEKLY` - Weekly\n* `MONTHLY` - Monthly","nullable":true},"recurrence_interval":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"recurrence_end_date":{"type":"string","format":"date","nullable":true},"child_session_ids":{"type":"string","readOnly":true}},"required":["child_session_ids","ends_at","starts_at","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/create/":{"post":{"operationId":"dashboard_mentor_session_create_create","description":"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.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionCreate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/SessionCreate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/SessionCreate"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/SessionCreate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/session/list/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"SessionList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"entity_id":{"type":"string","nullable":true,"maxLength":36},"entity_name":{"type":"string","readOnly":true},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"status":{"enum":["REQUESTED","SCHEDULED","PENDING_APPROVAL","COMPLETED","CANCELLED","REJECTED"],"type":"string","description":"* `REQUESTED` - Requested\n* `SCHEDULED` - Scheduled\n* `PENDING_APPROVAL` - Pending Approval\n* `COMPLETED` - Completed\n* `CANCELLED` - Cancelled\n* `REJECTED` - Rejected"},"created_by_id":{"type":"string","readOnly":true},"created_by_name":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"is_recurring":{"type":"boolean"},"parent_session_id":{"type":"string","readOnly":true,"nullable":true},"recurrence_type":{"enum":["DAILY","WEEKLY","MONTHLY","",null],"type":"string","description":"* `DAILY` - Daily\n* `WEEKLY` - Weekly\n* `MONTHLY` - Monthly","nullable":true},"recurrence_interval":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"recurrence_end_date":{"type":"string","format":"date","nullable":true}},"required":["created_at","created_by_id","created_by_name","ends_at","entity_name","parent_session_id","starts_at","status","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/list/":{"get":{"operationId":"dashboard_mentor_session_list_list","description":"List all sessions created by the logged-in mentor, or get details of a specific session.","parameters":[{"in":"query","name":"status","schema":{"type":"string"}}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/SessionList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/session/list/{session\_id}/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"SessionList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"entity_id":{"type":"string","nullable":true,"maxLength":36},"entity_name":{"type":"string","readOnly":true},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"status":{"enum":["REQUESTED","SCHEDULED","PENDING_APPROVAL","COMPLETED","CANCELLED","REJECTED"],"type":"string","description":"* `REQUESTED` - Requested\n* `SCHEDULED` - Scheduled\n* `PENDING_APPROVAL` - Pending Approval\n* `COMPLETED` - Completed\n* `CANCELLED` - Cancelled\n* `REJECTED` - Rejected"},"created_by_id":{"type":"string","readOnly":true},"created_by_name":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"is_recurring":{"type":"boolean"},"parent_session_id":{"type":"string","readOnly":true,"nullable":true},"recurrence_type":{"enum":["DAILY","WEEKLY","MONTHLY","",null],"type":"string","description":"* `DAILY` - Daily\n* `WEEKLY` - Weekly\n* `MONTHLY` - Monthly","nullable":true},"recurrence_interval":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"recurrence_end_date":{"type":"string","format":"date","nullable":true}},"required":["created_at","created_by_id","created_by_name","ends_at","entity_name","parent_session_id","starts_at","status","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/list/{session_id}/":{"get":{"operationId":"dashboard_mentor_session_list_list_2","description":"List all sessions created by the logged-in mentor, or get details of a specific session.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true},{"in":"query","name":"status","schema":{"type":"string"}}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/SessionList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/session/participant/add/{session\_id}/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorAddParticipant":{"type":"object","properties":{"muid":{"type":"string"}},"required":["muid"]},"ParticipantList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"session_id":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"user_full_name":{"type":"string","readOnly":true},"mu_id":{"type":"string","readOnly":true},"participant_role":{"enum":["MENTOR","MENTEE","CO_MENTOR"],"type":"string","description":"* `MENTOR` - Mentor\n* `MENTEE` - Mentee\n* `CO_MENTOR` - Co-Mentor"},"attendance_status":{"enum":["INVITED","ATTENDED","ABSENT"],"type":"string","description":"* `INVITED` - Invited\n* `ATTENDED` - Attended\n* `ABSENT` - Absent"},"progress_note":{"type":"string","nullable":true,"maxLength":500},"feedback":{"type":"string","nullable":true},"contributed_minutes":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"session_title":{"type":"string","readOnly":true},"session_starts_at":{"type":"string","format":"date-time","readOnly":true},"session_ends_at":{"type":"string","format":"date-time","readOnly":true},"session_mode":{"type":"string","readOnly":true},"session_meeting_link":{"type":"string","readOnly":true},"session_venue":{"type":"string","readOnly":true},"session_status":{"type":"string","readOnly":true},"session_entity_id":{"type":"string","readOnly":true},"session_entity_name":{"type":"string","readOnly":true}},"required":["created_at","mu_id","participant_role","session_ends_at","session_entity_id","session_entity_name","session_id","session_meeting_link","session_mode","session_starts_at","session_status","session_title","session_venue","user_full_name","user_id"]}}},"paths":{"/api/v1/dashboard/mentor/session/participant/add/{session_id}/":{"post":{"operationId":"dashboard_mentor_session_participant_add_create","description":"Mentor view to manually add a participant to a specific session using muid.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MentorAddParticipant"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/MentorAddParticipant"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MentorAddParticipant"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/ParticipantList"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/mentor/session/participant/feedback/{session\_id}/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedParticipantFeedback":{"type":"object","properties":{"feedback":{"type":"string","nullable":true}}},"ParticipantList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"session_id":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"user_full_name":{"type":"string","readOnly":true},"mu_id":{"type":"string","readOnly":true},"participant_role":{"enum":["MENTOR","MENTEE","CO_MENTOR"],"type":"string","description":"* `MENTOR` - Mentor\n* `MENTEE` - Mentee\n* `CO_MENTOR` - Co-Mentor"},"attendance_status":{"enum":["INVITED","ATTENDED","ABSENT"],"type":"string","description":"* `INVITED` - Invited\n* `ATTENDED` - Attended\n* `ABSENT` - Absent"},"progress_note":{"type":"string","nullable":true,"maxLength":500},"feedback":{"type":"string","nullable":true},"contributed_minutes":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"session_title":{"type":"string","readOnly":true},"session_starts_at":{"type":"string","format":"date-time","readOnly":true},"session_ends_at":{"type":"string","format":"date-time","readOnly":true},"session_mode":{"type":"string","readOnly":true},"session_meeting_link":{"type":"string","readOnly":true},"session_venue":{"type":"string","readOnly":true},"session_status":{"type":"string","readOnly":true},"session_entity_id":{"type":"string","readOnly":true},"session_entity_name":{"type":"string","readOnly":true}},"required":["created_at","mu_id","participant_role","session_ends_at","session_entity_id","session_entity_name","session_id","session_meeting_link","session_mode","session_starts_at","session_status","session_title","session_venue","user_full_name","user_id"]}}},"paths":{"/api/v1/dashboard/mentor/session/participant/feedback/{session_id}/":{"patch":{"operationId":"dashboard_mentor_session_participant_feedback_partial_update","description":"Allows a user to submit feedback for a session they attended.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedParticipantFeedback"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedParticipantFeedback"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedParticipantFeedback"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/ParticipantList"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/session/participant/history/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ParticipantList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"session_id":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"user_full_name":{"type":"string","readOnly":true},"mu_id":{"type":"string","readOnly":true},"participant_role":{"enum":["MENTOR","MENTEE","CO_MENTOR"],"type":"string","description":"* `MENTOR` - Mentor\n* `MENTEE` - Mentee\n* `CO_MENTOR` - Co-Mentor"},"attendance_status":{"enum":["INVITED","ATTENDED","ABSENT"],"type":"string","description":"* `INVITED` - Invited\n* `ATTENDED` - Attended\n* `ABSENT` - Absent"},"progress_note":{"type":"string","nullable":true,"maxLength":500},"feedback":{"type":"string","nullable":true},"contributed_minutes":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"session_title":{"type":"string","readOnly":true},"session_starts_at":{"type":"string","format":"date-time","readOnly":true},"session_ends_at":{"type":"string","format":"date-time","readOnly":true},"session_mode":{"type":"string","readOnly":true},"session_meeting_link":{"type":"string","readOnly":true},"session_venue":{"type":"string","readOnly":true},"session_status":{"type":"string","readOnly":true},"session_entity_id":{"type":"string","readOnly":true},"session_entity_name":{"type":"string","readOnly":true}},"required":["created_at","mu_id","participant_role","session_ends_at","session_entity_id","session_entity_name","session_id","session_meeting_link","session_mode","session_starts_at","session_status","session_title","session_venue","user_full_name","user_id"]}}},"paths":{"/api/v1/dashboard/mentor/session/participant/history/":{"get":{"operationId":"dashboard_mentor_session_participant_history_list","description":"List all mentorship sessions the logged-in user has joined.","tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/session/participant/list/{session\_id}/

> Mentor view to list all participants in a specific session.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ParticipantList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"session_id":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"user_full_name":{"type":"string","readOnly":true},"mu_id":{"type":"string","readOnly":true},"participant_role":{"enum":["MENTOR","MENTEE","CO_MENTOR"],"type":"string","description":"* `MENTOR` - Mentor\n* `MENTEE` - Mentee\n* `CO_MENTOR` - Co-Mentor"},"attendance_status":{"enum":["INVITED","ATTENDED","ABSENT"],"type":"string","description":"* `INVITED` - Invited\n* `ATTENDED` - Attended\n* `ABSENT` - Absent"},"progress_note":{"type":"string","nullable":true,"maxLength":500},"feedback":{"type":"string","nullable":true},"contributed_minutes":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"session_title":{"type":"string","readOnly":true},"session_starts_at":{"type":"string","format":"date-time","readOnly":true},"session_ends_at":{"type":"string","format":"date-time","readOnly":true},"session_mode":{"type":"string","readOnly":true},"session_meeting_link":{"type":"string","readOnly":true},"session_venue":{"type":"string","readOnly":true},"session_status":{"type":"string","readOnly":true},"session_entity_id":{"type":"string","readOnly":true},"session_entity_name":{"type":"string","readOnly":true}},"required":["created_at","mu_id","participant_role","session_ends_at","session_entity_id","session_entity_name","session_id","session_meeting_link","session_mode","session_starts_at","session_status","session_title","session_venue","user_full_name","user_id"]}}},"paths":{"/api/v1/dashboard/mentor/session/participant/list/{session_id}/":{"get":{"operationId":"dashboard_mentor_session_participant_list_list","description":"Mentor view to list all participants in a specific session.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/mentor/session/participant/update/{link\_id}/

> Mentor view to update participant's attendance and progress.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedParticipantUpdate":{"type":"object","properties":{"attendance_status":{"enum":["INVITED","ATTENDED","ABSENT"],"type":"string","description":"* `INVITED` - Invited\n* `ATTENDED` - Attended\n* `ABSENT` - Absent"},"progress_note":{"type":"string","nullable":true,"maxLength":500},"contributed_minutes":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true}}},"ParticipantUpdate":{"type":"object","properties":{"attendance_status":{"enum":["INVITED","ATTENDED","ABSENT"],"type":"string","description":"* `INVITED` - Invited\n* `ATTENDED` - Attended\n* `ABSENT` - Absent"},"progress_note":{"type":"string","nullable":true,"maxLength":500},"contributed_minutes":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true}}}}},"paths":{"/api/v1/dashboard/mentor/session/participant/update/{link_id}/":{"patch":{"operationId":"dashboard_mentor_session_participant_update_partial_update","description":"Mentor view to update participant's attendance and progress.","parameters":[{"in":"path","name":"link_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedParticipantUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedParticipantUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedParticipantUpdate"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/ParticipantUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/session/participation/join/{session\_id}/

> Allows a MuLearn user to join a scheduled mentorship session.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ParticipantList":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"session_id":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"user_full_name":{"type":"string","readOnly":true},"mu_id":{"type":"string","readOnly":true},"participant_role":{"enum":["MENTOR","MENTEE","CO_MENTOR"],"type":"string","description":"* `MENTOR` - Mentor\n* `MENTEE` - Mentee\n* `CO_MENTOR` - Co-Mentor"},"attendance_status":{"enum":["INVITED","ATTENDED","ABSENT"],"type":"string","description":"* `INVITED` - Invited\n* `ATTENDED` - Attended\n* `ABSENT` - Absent"},"progress_note":{"type":"string","nullable":true,"maxLength":500},"feedback":{"type":"string","nullable":true},"contributed_minutes":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"session_title":{"type":"string","readOnly":true},"session_starts_at":{"type":"string","format":"date-time","readOnly":true},"session_ends_at":{"type":"string","format":"date-time","readOnly":true},"session_mode":{"type":"string","readOnly":true},"session_meeting_link":{"type":"string","readOnly":true},"session_venue":{"type":"string","readOnly":true},"session_status":{"type":"string","readOnly":true},"session_entity_id":{"type":"string","readOnly":true},"session_entity_name":{"type":"string","readOnly":true}},"required":["created_at","mu_id","participant_role","session_ends_at","session_entity_id","session_entity_name","session_id","session_meeting_link","session_mode","session_starts_at","session_status","session_title","session_venue","user_full_name","user_id"]}}},"paths":{"/api/v1/dashboard/mentor/session/participation/join/{session_id}/":{"post":{"operationId":"dashboard_mentor_session_participation_join_create","description":"Allows a MuLearn user to join a scheduled mentorship session.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/ParticipantList"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/session/student-requests/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"StudentSessionRequestList":{"type":"object","description":"Read-only serializer used by mentors to see incoming student session requests.\nIncludes the requesting student's name for quick identification.","properties":{"id":{"type":"string","maxLength":36},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"entity_id":{"type":"string","nullable":true,"maxLength":36},"entity_name":{"type":"string","readOnly":true},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"status":{"enum":["REQUESTED","SCHEDULED","PENDING_APPROVAL","COMPLETED","CANCELLED","REJECTED"],"type":"string","description":"* `REQUESTED` - Requested\n* `SCHEDULED` - Scheduled\n* `PENDING_APPROVAL` - Pending Approval\n* `COMPLETED` - Completed\n* `CANCELLED` - Cancelled\n* `REJECTED` - Rejected"},"requested_by_id":{"type":"string","nullable":true,"readOnly":true},"requested_by_name":{"type":"string","readOnly":true},"requested_by_muid":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","ends_at","entity_name","requested_by_id","requested_by_muid","requested_by_name","starts_at","status","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/student-requests/":{"get":{"operationId":"dashboard_mentor_session_student_requests_list","description":"List all pending student session requests that are within the logged-in mentor's scope (their assigned IGs, campus, or company).","tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/StudentSessionRequestList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/mentor/session/student-requests/{session\_id}/verify/

> 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.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedMentorStudentRequestVerify":{"type":"object","description":"Allows a mentor to approve or reject a student's session request.\n\nOn APPROVE:\n  - Optional overrides (starts_at, ends_at, mode, meeting_link, venue) are\n    applied so the mentor can adjust the proposed time / logistics.\n  - The session transitions from REQUESTED → PENDING_APPROVAL.\n  - created_by is updated to the approving mentor so the session appears in\n    their dashboard and they can edit/cancel it using existing APIs.\n  - requested_by is left untouched — permanent audit trail.\n\nOn REJECT:\n  - The session transitions from REQUESTED → REJECTED.\n  - requested_by remains set; the student can view their rejected requests.","properties":{"status":{"enum":["APPROVED","REJECTED"],"type":"string","description":"* `APPROVED` - APPROVED\n* `REJECTED` - REJECTED"},"starts_at":{"type":"string","format":"date-time","nullable":true},"ends_at":{"type":"string","format":"date-time","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID",null],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid","nullable":true},"meeting_link":{"type":"string","nullable":true},"venue":{"type":"string","nullable":true}}}}},"paths":{"/api/v1/dashboard/mentor/session/student-requests/{session_id}/verify/":{"patch":{"operationId":"dashboard_mentor_session_student_requests_verify_partial_update","description":"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.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedMentorStudentRequestVerify"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedMentorStudentRequestVerify"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedMentorStudentRequestVerify"}}}},"responses":{"200":{"description":"No response body"}}}}}}
```

## GET /api/v1/dashboard/mentor/session/student/my-requests/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"StudentSessionRequestList":{"type":"object","description":"Read-only serializer used by mentors to see incoming student session requests.\nIncludes the requesting student's name for quick identification.","properties":{"id":{"type":"string","maxLength":36},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"entity_id":{"type":"string","nullable":true,"maxLength":36},"entity_name":{"type":"string","readOnly":true},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"status":{"enum":["REQUESTED","SCHEDULED","PENDING_APPROVAL","COMPLETED","CANCELLED","REJECTED"],"type":"string","description":"* `REQUESTED` - Requested\n* `SCHEDULED` - Scheduled\n* `PENDING_APPROVAL` - Pending Approval\n* `COMPLETED` - Completed\n* `CANCELLED` - Cancelled\n* `REJECTED` - Rejected"},"requested_by_id":{"type":"string","nullable":true,"readOnly":true},"requested_by_name":{"type":"string","readOnly":true},"requested_by_muid":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","ends_at","entity_name","requested_by_id","requested_by_muid","requested_by_name","starts_at","status","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/student/my-requests/":{"get":{"operationId":"dashboard_mentor_session_student_my_requests_list","description":"List all session requests made by the logged-in student.","parameters":[{"in":"query","name":"status","schema":{"type":"string"},"description":"Filter by status: REQUESTED, PENDING_APPROVAL, REJECTED, etc."}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/StudentSessionRequestList"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/session/student/request/

> 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.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"StudentSessionRequest":{"type":"object","description":"Used by students to create a session request.\n\nAll sessions are Interest-Group scoped, so only ``ig_session`` requests are\naccepted; company/campus session types are rejected.\n\nValidates:\n  - The session_type is ig_session and the student is a member of the target\n    Interest Group (entity_id).\n  - Time constraints (starts_at < ends_at, starts_at in future).\n  - Mode / venue / meeting-link consistency (same rules as SessionCreateSerializer).\n  - No duplicate pending request (same student + entity + title + starts_at).","properties":{"id":{"type":"string","maxLength":36},"session_type":{"enum":["ig_session","campus_session","company_session"],"type":"string","description":"* `ig_session` - IG Session\n* `campus_session` - Campus Session\n* `company_session` - Company Session"},"entity_id":{"type":"string","nullable":true,"maxLength":36},"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true}},"required":["ends_at","starts_at","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/student/request/":{"post":{"operationId":"dashboard_mentor_session_student_request_create","description":"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.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudentSessionRequest"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/StudentSessionRequest"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/StudentSessionRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/StudentSessionRequest"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/mentor/session/update/{session\_id}/

> Delete a mentorship session.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/session/update/{session_id}/":{"delete":{"operationId":"dashboard_mentor_session_update_destroy","description":"Delete a mentorship session.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"204":{"description":"No response body"}}}}}}
```

## PATCH /api/v1/dashboard/mentor/session/update/{session\_id}/

> Update or cancel a mentorship session.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedSessionUpdate":{"type":"object","properties":{"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true}}},"SessionUpdate":{"type":"object","properties":{"title":{"type":"string","maxLength":150},"description":{"type":"string","nullable":true},"mode":{"enum":["ONLINE","OFFLINE","HYBRID"],"type":"string","description":"* `ONLINE` - Online\n* `OFFLINE` - Offline\n* `HYBRID` - Hybrid"},"starts_at":{"type":"string","format":"date-time"},"ends_at":{"type":"string","format":"date-time"},"meeting_link":{"type":"string","nullable":true,"maxLength":500},"venue":{"type":"string","nullable":true,"maxLength":255},"max_participants":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true}},"required":["ends_at","starts_at","title"]}}},"paths":{"/api/v1/dashboard/mentor/session/update/{session_id}/":{"patch":{"operationId":"dashboard_mentor_session_update_partial_update","description":"Update or cancel a mentorship session.","parameters":[{"in":"path","name":"session_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedSessionUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedSessionUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedSessionUpdate"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/SessionUpdate"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/mentor/status/

> Check the status of a mentor registration.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/status/":{"get":{"operationId":"dashboard_mentor_status_retrieve","description":"Check the status of a mentor registration.","tags":["Mentor"],"responses":{"200":{"description":"No response body"}}}}}}
```

## GET /api/v1/dashboard/mentor/tasks/

> List all tasks submitted by the authenticated mentor (filtered by requested\_by). Supports pagination, search, and sort.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorTaskListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"pagination":{"type":"object","additionalProperties":{}}},"required":["data","pagination"]}}},"paths":{"/api/v1/dashboard/mentor/tasks/":{"get":{"operationId":"dashboard_mentor_tasks_retrieve","description":"List all tasks submitted by the authenticated mentor (filtered by requested_by). Supports pagination, search, and sort.","parameters":[{"in":"query","name":"approval_status","schema":{"type":"string"},"description":"Filter by approval_status: pending | approved | rejected"}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorTaskListResponse"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/mentor/tasks/

> 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.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorTaskCreate":{"type":"object","description":"Mirrors admin TaskModifySerializer field-for-field.\nLocked fields (active, approval_status, requested_by, requested_at)\nare injected by the view via serializer.save(**overrides).","properties":{"hashtag":{"type":"string","maxLength":75},"title":{"type":"string","maxLength":75},"karma":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"usage_count":{"type":"integer","maximum":2147483647,"minimum":-2147483648},"description":{"type":"string","nullable":true},"type":{"type":"string"},"level":{"type":"string","nullable":true},"ig":{"type":"string"},"created_by":{"type":"string"},"updated_by":{"type":"string"}},"required":["created_by","hashtag","ig","title","type","updated_by"]}}},"paths":{"/api/v1/dashboard/mentor/tasks/":{"post":{"operationId":"dashboard_mentor_tasks_create","description":"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.","tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MentorTaskCreate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/MentorTaskCreate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MentorTaskCreate"}}},"required":true},"responses":{"200":{"description":"Task submitted for approval."}}}}}}
```

## GET /api/v1/dashboard/mentor/tasks/{task\_id}/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorTaskList":{"type":"object","description":"Read-only list/detail serializer — mirrors admin TaskListSerializer.","properties":{"id":{"type":"string","maxLength":36},"hashtag":{"type":"string","maxLength":75},"discord_link":{"type":"string","nullable":true,"maxLength":200},"title":{"type":"string","maxLength":75},"description":{"type":"string","nullable":true},"karma":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"channel":{"type":"string"},"type":{"type":"string"},"active":{"type":"boolean"},"variable_karma":{"type":"boolean"},"usage_count":{"type":"integer","maximum":2147483647,"minimum":-2147483648},"level":{"type":"string"},"org":{"type":"string"},"ig":{"type":"string"},"event":{"type":"string","nullable":true,"maxLength":50},"bonus_karma":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"bonus_time":{"type":"string","format":"date-time","nullable":true},"approval_status":{"enum":["approved","pending","rejected"],"type":"string","description":"* `approved` - Approved\n* `pending` - Pending\n* `rejected` - Rejected"},"rejection_reason":{"type":"string","nullable":true},"reviewed_at":{"type":"string","format":"date-time","nullable":true},"requested_by_name":{"type":"string"},"requested_at":{"type":"string","format":"date-time","nullable":true},"skills":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","hashtag","skills","title","type","updated_at"]}}},"paths":{"/api/v1/dashboard/mentor/tasks/{task_id}/":{"get":{"operationId":"dashboard_mentor_tasks_retrieve_2","description":"Retrieve the detail of a specific task submitted by the mentor.","parameters":[{"in":"path","name":"task_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"$ref":"#/components/schemas/MentorTaskList"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PUT /api/v1/dashboard/mentor/tasks/{task\_id}/

> 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.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorTaskUpdate":{"type":"object","description":"Partial update serializer — same writable fields as create.\nThe view injects approval_status / active / review-reset fields via save().","properties":{"hashtag":{"type":"string","maxLength":75},"title":{"type":"string","maxLength":75},"karma":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"nullable":true},"usage_count":{"type":"integer","maximum":2147483647,"minimum":-2147483648},"description":{"type":"string","nullable":true},"type":{"type":"string"},"level":{"type":"string","nullable":true},"ig":{"type":"string","nullable":true},"updated_by":{"type":"string"}},"required":["hashtag","title","type","updated_by"]}}},"paths":{"/api/v1/dashboard/mentor/tasks/{task_id}/":{"put":{"operationId":"dashboard_mentor_tasks_update","description":"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.","parameters":[{"in":"path","name":"task_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MentorTaskUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/MentorTaskUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MentorTaskUpdate"}}},"required":true},"responses":{"200":{"description":"Task updated and re-submitted for approval."}}}}}}
```

## DELETE /api/v1/dashboard/mentor/tasks/{task\_id}/

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

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}}},"paths":{"/api/v1/dashboard/mentor/tasks/{task_id}/":{"delete":{"operationId":"dashboard_mentor_tasks_destroy","description":"Delete a task submitted by the mentor. Only allowed when approval_status is 'pending'. Approved or rejected tasks cannot be deleted.","parameters":[{"in":"path","name":"task_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"responses":{"200":{"description":"Task deleted successfully."}}}}}}
```

## GET /api/v1/dashboard/mentor/tasks/ig-dropdown/

> 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.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"MentorIGDropdownResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}}},"paths":{"/api/v1/dashboard/mentor/tasks/ig-dropdown/":{"get":{"operationId":"dashboard_mentor_tasks_ig_dropdown_list","description":"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.","tags":["Mentor"],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"hasError":{"type":"boolean","default":false},"statusCode":{"type":"integer","default":200},"message":{"type":"object","properties":{"general":{"type":"array","items":{"type":"string"}}}},"response":{"type":"array","items":{"$ref":"#/components/schemas/MentorIGDropdownResponse"}}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/mentor/verify/{mentor\_id}/

> 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.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"cookieAuth":[]},{"basicAuth":[]},{"jwtAuth":[]}],"components":{"securitySchemes":{"cookieAuth":{"type":"apiKey","in":"cookie","name":"sessionid"},"basicAuth":{"type":"http","scheme":"basic"},"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"PatchedMentorVerify":{"type":"object","properties":{"status":{"enum":["APPROVED","REJECTED"],"type":"string","description":"* `APPROVED` - APPROVED\n* `REJECTED` - REJECTED"},"verification_note":{"type":"string"}}}}},"paths":{"/api/v1/dashboard/mentor/verify/{mentor_id}/":{"patch":{"operationId":"dashboard_mentor_verify_partial_update","description":"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.","parameters":[{"in":"path","name":"mentor_id","schema":{"type":"string"},"required":true}],"tags":["Mentor"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchedMentorVerify"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/PatchedMentorVerify"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/PatchedMentorVerify"}}}},"responses":{"200":{"description":"No response body"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.mulearn.org/api-reference/mentor.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
