# Projects

## GET /api/v1/dashboard/projects/

> Retrieve Projects.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Project":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"title":{"type":"string","maxLength":50},"description":{"type":"string"},"status":{"enum":["draft","published","archived"],"type":"string","description":"* `draft` - Draft\n* `published` - Published\n* `archived` - Archived"},"logo":{"type":"string","format":"uri","nullable":true},"images":{"type":"array","items":{"$ref":"#/components/schemas/ProjectImage"},"readOnly":true},"links":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLink"},"readOnly":true},"skills":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSkill"},"readOnly":true},"members":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMember"},"readOnly":true},"votes":{"type":"array","items":{"$ref":"#/components/schemas/Vote"},"readOnly":true},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"readOnly":true},"created_by":{"type":"string","readOnly":true},"created_by_id":{"type":"string","readOnly":true},"updated_by":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comments","created_at","created_by","created_by_id","description","images","links","members","skills","title","updated_at","updated_by","votes"]},"ProjectImage":{"type":"object","properties":{"image":{"type":"string","format":"uri","nullable":true}}},"ProjectLink":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"label":{"type":"string","maxLength":50},"url":{"type":"string","maxLength":500},"position":{"type":"integer","maximum":2147483647,"minimum":-2147483648}},"required":["label","url"]},"ProjectSkill":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"icon":{"type":"string"}},"required":["code","icon","id","name"]},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]},"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]},"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/":{"get":{"operationId":"dashboard_projects_retrieve","description":"Retrieve Projects.","tags":["Projects"],"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/Project"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/projects/

> Create Projects.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ProjectUpdate":{"type":"object","description":"Accepts create / partial-update payload. Logo + images come as files;\nlinks + skills come as JSON-encoded strings (because the request is\nmultipart/form-data).","properties":{"title":{"type":"string","maxLength":50},"description":{"type":"string"},"status":{"enum":["draft","published","archived"],"type":"string","description":"* `draft` - Draft\n* `published` - Published\n* `archived` - Archived"},"logo":{"type":"string","format":"uri","nullable":true},"links_json":{"type":"string","writeOnly":true},"skill_ids_json":{"type":"string","writeOnly":true}}},"Project":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"title":{"type":"string","maxLength":50},"description":{"type":"string"},"status":{"enum":["draft","published","archived"],"type":"string","description":"* `draft` - Draft\n* `published` - Published\n* `archived` - Archived"},"logo":{"type":"string","format":"uri","nullable":true},"images":{"type":"array","items":{"$ref":"#/components/schemas/ProjectImage"},"readOnly":true},"links":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLink"},"readOnly":true},"skills":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSkill"},"readOnly":true},"members":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMember"},"readOnly":true},"votes":{"type":"array","items":{"$ref":"#/components/schemas/Vote"},"readOnly":true},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"readOnly":true},"created_by":{"type":"string","readOnly":true},"created_by_id":{"type":"string","readOnly":true},"updated_by":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comments","created_at","created_by","created_by_id","description","images","links","members","skills","title","updated_at","updated_by","votes"]},"ProjectImage":{"type":"object","properties":{"image":{"type":"string","format":"uri","nullable":true}}},"ProjectLink":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"label":{"type":"string","maxLength":50},"url":{"type":"string","maxLength":500},"position":{"type":"integer","maximum":2147483647,"minimum":-2147483648}},"required":["label","url"]},"ProjectSkill":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"icon":{"type":"string"}},"required":["code","icon","id","name"]},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]},"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]},"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/":{"post":{"operationId":"dashboard_projects_create","description":"Create Projects.","tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"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/Project"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/projects/{id}/

> Retrieve Project Detail.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Project":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"title":{"type":"string","maxLength":50},"description":{"type":"string"},"status":{"enum":["draft","published","archived"],"type":"string","description":"* `draft` - Draft\n* `published` - Published\n* `archived` - Archived"},"logo":{"type":"string","format":"uri","nullable":true},"images":{"type":"array","items":{"$ref":"#/components/schemas/ProjectImage"},"readOnly":true},"links":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLink"},"readOnly":true},"skills":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSkill"},"readOnly":true},"members":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMember"},"readOnly":true},"votes":{"type":"array","items":{"$ref":"#/components/schemas/Vote"},"readOnly":true},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"readOnly":true},"created_by":{"type":"string","readOnly":true},"created_by_id":{"type":"string","readOnly":true},"updated_by":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comments","created_at","created_by","created_by_id","description","images","links","members","skills","title","updated_at","updated_by","votes"]},"ProjectImage":{"type":"object","properties":{"image":{"type":"string","format":"uri","nullable":true}}},"ProjectLink":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"label":{"type":"string","maxLength":50},"url":{"type":"string","maxLength":500},"position":{"type":"integer","maximum":2147483647,"minimum":-2147483648}},"required":["label","url"]},"ProjectSkill":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"icon":{"type":"string"}},"required":["code","icon","id","name"]},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]},"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]},"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{id}/":{"get":{"operationId":"dashboard_projects_retrieve_2","description":"Retrieve Project Detail.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Project"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PUT /api/v1/dashboard/projects/{id}/

> Update Project Detail.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Project":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"title":{"type":"string","maxLength":50},"description":{"type":"string"},"status":{"enum":["draft","published","archived"],"type":"string","description":"* `draft` - Draft\n* `published` - Published\n* `archived` - Archived"},"logo":{"type":"string","format":"uri","nullable":true},"images":{"type":"array","items":{"$ref":"#/components/schemas/ProjectImage"},"readOnly":true},"links":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLink"},"readOnly":true},"skills":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSkill"},"readOnly":true},"members":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMember"},"readOnly":true},"votes":{"type":"array","items":{"$ref":"#/components/schemas/Vote"},"readOnly":true},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"readOnly":true},"created_by":{"type":"string","readOnly":true},"created_by_id":{"type":"string","readOnly":true},"updated_by":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comments","created_at","created_by","created_by_id","description","images","links","members","skills","title","updated_at","updated_by","votes"]},"ProjectImage":{"type":"object","properties":{"image":{"type":"string","format":"uri","nullable":true}}},"ProjectLink":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"label":{"type":"string","maxLength":50},"url":{"type":"string","maxLength":500},"position":{"type":"integer","maximum":2147483647,"minimum":-2147483648}},"required":["label","url"]},"ProjectSkill":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"icon":{"type":"string"}},"required":["code","icon","id","name"]},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]},"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]},"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{id}/":{"put":{"operationId":"dashboard_projects_update","description":"Update Project Detail.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Project"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/projects/{id}/

> Delete Project Detail.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Project":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"title":{"type":"string","maxLength":50},"description":{"type":"string"},"status":{"enum":["draft","published","archived"],"type":"string","description":"* `draft` - Draft\n* `published` - Published\n* `archived` - Archived"},"logo":{"type":"string","format":"uri","nullable":true},"images":{"type":"array","items":{"$ref":"#/components/schemas/ProjectImage"},"readOnly":true},"links":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLink"},"readOnly":true},"skills":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSkill"},"readOnly":true},"members":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMember"},"readOnly":true},"votes":{"type":"array","items":{"$ref":"#/components/schemas/Vote"},"readOnly":true},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"readOnly":true},"created_by":{"type":"string","readOnly":true},"created_by_id":{"type":"string","readOnly":true},"updated_by":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comments","created_at","created_by","created_by_id","description","images","links","members","skills","title","updated_at","updated_by","votes"]},"ProjectImage":{"type":"object","properties":{"image":{"type":"string","format":"uri","nullable":true}}},"ProjectLink":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"label":{"type":"string","maxLength":50},"url":{"type":"string","maxLength":500},"position":{"type":"integer","maximum":2147483647,"minimum":-2147483648}},"required":["label","url"]},"ProjectSkill":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"icon":{"type":"string"}},"required":["code","icon","id","name"]},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]},"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]},"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{id}/":{"delete":{"operationId":"dashboard_projects_destroy","description":"Delete Project Detail.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Project"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PATCH /api/v1/dashboard/projects/{id}/status/

> Partially update Project Status.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Project":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"title":{"type":"string","maxLength":50},"description":{"type":"string"},"status":{"enum":["draft","published","archived"],"type":"string","description":"* `draft` - Draft\n* `published` - Published\n* `archived` - Archived"},"logo":{"type":"string","format":"uri","nullable":true},"images":{"type":"array","items":{"$ref":"#/components/schemas/ProjectImage"},"readOnly":true},"links":{"type":"array","items":{"$ref":"#/components/schemas/ProjectLink"},"readOnly":true},"skills":{"type":"array","items":{"$ref":"#/components/schemas/ProjectSkill"},"readOnly":true},"members":{"type":"array","items":{"$ref":"#/components/schemas/ProjectMember"},"readOnly":true},"votes":{"type":"array","items":{"$ref":"#/components/schemas/Vote"},"readOnly":true},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comment"},"readOnly":true},"created_by":{"type":"string","readOnly":true},"created_by_id":{"type":"string","readOnly":true},"updated_by":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comments","created_at","created_by","created_by_id","description","images","links","members","skills","title","updated_at","updated_by","votes"]},"ProjectImage":{"type":"object","properties":{"image":{"type":"string","format":"uri","nullable":true}}},"ProjectLink":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"label":{"type":"string","maxLength":50},"url":{"type":"string","maxLength":500},"position":{"type":"integer","maximum":2147483647,"minimum":-2147483648}},"required":["label","url"]},"ProjectSkill":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"code":{"type":"string"},"icon":{"type":"string"}},"required":["code","icon","id","name"]},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]},"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]},"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{id}/status/":{"patch":{"operationId":"dashboard_projects_status_partial_update","description":"Partially update Project Status.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Project"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/projects/{project\_id}/members/

> Retrieve Project Member.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{project_id}/members/":{"get":{"operationId":"dashboard_projects_members_retrieve","description":"Retrieve Project Member.","parameters":[{"in":"path","name":"project_id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/ProjectMember"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/projects/{project\_id}/members/

> Create Project Member.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"AddMember":{"type":"object","description":"Accepts exactly one identity: muid, user_id, or external_name.","properties":{"muid":{"type":"string"},"user_id":{"type":"string"},"external_name":{"type":"string","maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50}}},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{project_id}/members/":{"post":{"operationId":"dashboard_projects_members_create","description":"Create Project Member.","parameters":[{"in":"path","name":"project_id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMember"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AddMember"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/AddMember"}}}},"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/ProjectMember"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/projects/{project\_id}/members/

> Delete Project Member.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{project_id}/members/":{"delete":{"operationId":"dashboard_projects_members_destroy","description":"Delete Project Member.","parameters":[{"in":"path","name":"project_id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/ProjectMember"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## GET /api/v1/dashboard/projects/{project\_id}/members/{id}/

> Retrieve Project Member.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{project_id}/members/{id}/":{"get":{"operationId":"dashboard_projects_members_retrieve_2","description":"Retrieve Project Member.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true},{"in":"path","name":"project_id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/ProjectMember"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/projects/{project\_id}/members/{id}/

> Create Project Member.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"AddMember":{"type":"object","description":"Accepts exactly one identity: muid, user_id, or external_name.","properties":{"muid":{"type":"string"},"user_id":{"type":"string"},"external_name":{"type":"string","maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50}}},"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{project_id}/members/{id}/":{"post":{"operationId":"dashboard_projects_members_create_2","description":"Create Project Member.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true},{"in":"path","name":"project_id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddMember"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AddMember"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/AddMember"}}}},"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/ProjectMember"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/projects/{project\_id}/members/{id}/

> Delete Project Member.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"ProjectMember":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"is_linked":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"muid":{"type":"string","readOnly":true},"full_name":{"type":"string","readOnly":true},"profile_pic":{"type":"string","readOnly":true},"external_name":{"type":"string","nullable":true,"maxLength":100},"role":{"type":"string","nullable":true,"maxLength":50},"created_at":{"type":"string","format":"date-time","readOnly":true}},"required":["created_at","full_name","is_linked","muid","profile_pic","user_id"]}}},"paths":{"/api/v1/dashboard/projects/{project_id}/members/{id}/":{"delete":{"operationId":"dashboard_projects_members_destroy_2","description":"Delete Project Member.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true},{"in":"path","name":"project_id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/ProjectMember"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/projects/comment/

> Create Project Comment.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/comment/":{"post":{"operationId":"dashboard_projects_comment_create","description":"Create Project Comment.","tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Comment"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Comment"}}},"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/Comment"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PUT /api/v1/dashboard/projects/comment/

> Update Project Comment.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/comment/":{"put":{"operationId":"dashboard_projects_comment_update","description":"Update Project Comment.","tags":["Projects"],"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/Comment"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/projects/comment/

> Delete Project Comment.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/comment/":{"delete":{"operationId":"dashboard_projects_comment_destroy","description":"Delete Project Comment.","tags":["Projects"],"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/Comment"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/projects/comment/{id}/

> Create Project Comment.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/comment/{id}/":{"post":{"operationId":"dashboard_projects_comment_create_2","description":"Create Project Comment.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comment"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Comment"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Comment"}}},"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/Comment"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## PUT /api/v1/dashboard/projects/comment/{id}/

> Update Project Comment.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/comment/{id}/":{"put":{"operationId":"dashboard_projects_comment_update_2","description":"Update Project Comment.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Comment"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/projects/comment/{id}/

> Delete Project Comment.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Comment":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"comment":{"type":"string"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"type":"string","readOnly":true},"created_at":{"type":"string","format":"date-time","readOnly":true},"updated_at":{"type":"string","format":"date-time","readOnly":true}},"required":["comment","created_at","project","updated_at","user","user_id"]}}},"paths":{"/api/v1/dashboard/projects/comment/{id}/":{"delete":{"operationId":"dashboard_projects_comment_destroy_2","description":"Delete Project Comment.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Comment"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/projects/vote/

> Create Project Vote.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]}}},"paths":{"/api/v1/dashboard/projects/vote/":{"post":{"operationId":"dashboard_projects_vote_create","description":"Create Project Vote.","tags":["Projects"],"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/Vote"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/projects/vote/

> Delete Project Vote.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]}}},"paths":{"/api/v1/dashboard/projects/vote/":{"delete":{"operationId":"dashboard_projects_vote_destroy","description":"Delete Project Vote.","tags":["Projects"],"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/Vote"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## POST /api/v1/dashboard/projects/vote/{id}/

> Create Project Vote.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]}}},"paths":{"/api/v1/dashboard/projects/vote/{id}/":{"post":{"operationId":"dashboard_projects_vote_create_2","description":"Create Project Vote.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Vote"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```

## DELETE /api/v1/dashboard/projects/vote/{id}/

> Delete Project Vote.

```json
{"openapi":"3.0.3","info":{"title":"muLearn API","version":"1.0.0"},"security":[{"jwtAuth":[]},{}],"components":{"securitySchemes":{"jwtAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"JWT Token Authentication. Enter **\"Bearer <token>\"**"}},"schemas":{"Vote":{"type":"object","properties":{"id":{"type":"string","maxLength":36},"vote":{"enum":["upvote","downvote"],"type":"string","description":"* `upvote` - Upvote\n* `downvote` - Downvote"},"project":{"type":"string"},"user":{"type":"string","readOnly":true},"user_id":{"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","project","updated_at","user","user_id","vote"]}}},"paths":{"/api/v1/dashboard/projects/vote/{id}/":{"delete":{"operationId":"dashboard_projects_vote_destroy_2","description":"Delete Project Vote.","parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid"},"required":true}],"tags":["Projects"],"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/Vote"}},"required":["hasError","statusCode","message","response"]}}},"description":""}}}}}}
```


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mulearn.org/api-reference/projects.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
