Skip to content

API Reference

Base URL: http://localhost:4000/api

All endpoints (except auth) require Authorization: Bearer <access_token>.

Authentication

MethodPathAuthDescription
POST/api/auth/registerNoCreate account
POST/api/auth/loginNoLogin
POST/api/auth/refreshNoRefresh access token
POST/api/auth/logoutYesLogout
GET/api/auth/meYesCurrent user profile
PATCH/api/auth/meYesUpdate profile

Users

MethodPathAuthDescription
GET/api/usersYesList users (up to 20)
GET/api/users/:idYesGet user details
GET/api/users/searchYesSearch users by query

Organizations

MethodPathAuthPermissions
GET/api/organizationsYes
POST/api/organizationsYes
GET/api/organizations/:orgIdYesorg:view
PATCH/api/organizations/:orgIdYesorg:edit
DELETE/api/organizations/:orgIdYesorg:delete
GET/api/organizations/:orgId/membersYesorg:members.view
POST/api/organizations/:orgId/membersYesorg:members.invite
PATCH/api/organizations/:orgId/members/:userIdYesorg:members.roles
DELETE/api/organizations/:orgId/members/:userIdYesorg:members.remove

Teams

MethodPathAuthPermissions
GET/api/teamsYes
POST/api/teamsYes
GET/api/teams/:teamIdYesteam:view
PATCH/api/teams/:teamIdYesteam:edit
DELETE/api/teams/:teamIdYesteam:delete
GET/api/teams/:teamId/membersYesteam:members.view
POST/api/teams/:teamId/membersYesteam:members.add
PATCH/api/teams/:teamId/members/:userIdYesteam:members.roles
DELETE/api/teams/:teamId/members/:userIdYesteam:members.remove
GET/api/teams/by-slug/:teamSlug/tasksYestask:view

Projects

MethodPathAuthPermissions
GET/api/projectsYes
POST/api/projectsYesproject:create
GET/api/projects/:projectIdYesproject:view
PATCH/api/projects/:projectIdYesproject:edit
DELETE/api/projects/:projectIdYesproject:delete
GET/api/projects/:projectId/membersYesproject:members.view
POST/api/projects/:projectId/membersYesproject:members.add
DELETE/api/projects/:projectId/members/:userIdYesproject:members.remove

Tasks

MethodPathAuthPermissions
GET/api/tasks/myYes
GET/api/projects/:projectId/tasksYestask:view
POST/api/projects/:projectId/tasksYestask:create
GET/api/projects/:projectId/tasks/:taskIdYestask:view
PATCH/api/projects/:projectId/tasks/:taskIdYestask:edit
PATCH/api/projects/:projectId/tasks/:taskId/statusYestask:edit
DELETE/api/projects/:projectId/tasks/:taskIdYestask:delete

Task Comments

MethodPathAuthDescription
GET/api/projects/:projectId/tasks/:taskId/commentsYesList comments
POST/api/projects/:projectId/tasks/:taskId/commentsYesCreate comment
PATCH/api/projects/:projectId/tasks/:taskId/comments/:commentIdYesEdit comment
DELETE/api/projects/:projectId/tasks/:taskId/comments/:commentIdYesDelete comment
POST/api/projects/:projectId/tasks/:taskId/comments/attachmentsYesUpload attachments

Task History

MethodPathAuthPermissions
GET/api/projects/:projectId/tasks/:taskId/historyYestask:view

Chat

MethodPathAuthDescription
GET/api/chats/conversationsYesList conversations
POST/api/chats/direct/:userIdYesDirect conversation
POST/api/chats/task/:taskIdYesTask conversation
GET/api/chats/conversations/:convId/messagesYesList messages
POST/api/chats/conversations/:convId/messagesYesSend message

Notifications

MethodPathAuthDescription
GET/api/notificationsYesList notifications
GET/api/notifications/unread-countYesUnread count
PATCH/api/notifications/:id/readYesMark as read
PATCH/api/notifications/read-allYesMark all as read
DELETE/api/notifications/:idYesDelete notification

Admin

MethodPathAuthDescription
GET/api/admin/usersYesList all users
PATCH/api/admin/users/:idYesUpdate user
DELETE/api/admin/users/:idYesDelete user
GET/api/admin/organizationsYesList all orgs
GET/api/admin/teamsYesList all teams
GET/api/admin/rolesYesList roles
POST/api/admin/rolesYesCreate role
PATCH/api/admin/roles/:idYesUpdate role
DELETE/api/admin/roles/:idYesDelete role
GET/api/admin/groupsYesList groups
POST/api/admin/groupsYesCreate group
PATCH/api/admin/groups/:idYesUpdate group
DELETE/api/admin/groups/:idYesDelete group

Error Responses

All errors return a consistent JSON structure:

json
{
  "statusCode": 400,
  "message": "Error description",
  "error": "Bad Request"
}

Common status codes:

  • 200 — Success
  • 201 — Created
  • 400 — Bad Request (validation error)
  • 401 — Unauthorized
  • 403 — Forbidden
  • 404 — Not Found
  • 409 — Conflict
  • 500 — Internal Server Error

Pagination

List endpoints support pagination via query parameters:

ParameterTypeDefaultDescription
pagenumber1Page number
limitnumber20Items per page
json
{
  "data": [...],
  "total": 50,
  "page": 1,
  "limit": 20
}