Version: 1.0.0
Contact: realabdullah
License: ISC
- Development:
http://localhost:3000 - Production:
https://taskgidapi.abdspace.xyz
All protected endpoints require a Bearer JWT token in the Authorization header:
- Type: HTTP Bearer
- Format: JWT
error(string): Error messagesuccess(boolean, default: false)
id(uuid)email(email)firstName(string)lastName(string)username(string)profilePicture(string, nullable)title(string, nullable)about(string, nullable)location(string, nullable)role(string: user, admin)createdAt(date-time)updatedAt(date-time)
id(uuid)name(string)slug(string)description(string, nullable)createdAt(date-time)updatedAt(date-time)
id(uuid)title(string)description(string, nullable)status(string: todo, in_progress, done)priority(string: low, medium, high)dueDate(date-time, nullable)workspaceId(uuid)assignees(array of users)createdAt(date-time)updatedAt(date-time)
id(uuid)content(string)taskId(uuid)userId(uuid)createdAt(date-time)updatedAt(date-time)
id(uuid)filename(string)originalname(string)mimetype(string)size(integer)path(string)url(string)storageType(string)userId(uuid)taskId(uuid, nullable)commentId(uuid, nullable)createdAt(date-time)updatedAt(date-time)
tasksByStatus: {todo,in_progress,done} (integer)tasksByPriority: {low,medium,high} (integer)completionRate(float)teamMemberCount(integer)
- POST
/auth/register - Request Body:
email(email, required)password(string, min 8, required)firstName(string, required)lastName(string, required)username(string, pattern:^[a-zA-Z0-9_]+$, required)
- Responses:
201: User registered, returns user and accessToken400: Invalid input500: Server error
- POST
/auth/login - Request Body:
email(email, required)password(string, required)
- Responses:
200: Login successful, returns user, accessToken, refreshToken401: Invalid credentials
- POST
/auth/logout - Security: Bearer
- Responses:
200: Logout successful500: Server error
- POST
/auth/refresh - Request Body:
refreshToken(string, required)
- Responses:
200: Token refreshed401: Invalid refresh token
- POST
/auth/authn/request-login- Request WebAuthn login options
- POST
/auth/authn/login- Complete WebAuthn login
- POST
/auth/authn/register- Register a new WebAuthn credential (Bearer required)
- POST
/auth/authn/verify-registration- Verify WebAuthn registration (Bearer required)
- GET
/users - Security: Bearer
- Responses:
200: User profile404: User not found
- GET
/users/profile - PUT
/users/profile - Security: Bearer
- PUT Request Body:
firstName,lastName,title,about,location
- Responses:
200: Profile retrieved/updated400: Invalid input404: Profile not found
- POST
/users/profile/picture - Security: Bearer
- Request:
multipart/form-datawithfile - Responses:
200: Picture uploaded400: Invalid file
- GET
/workspaces - POST
/workspaces - Security: Bearer
- POST Request Body:
name(string, required)description(string, optional)
- Responses:
200: Workspaces retrieved201: Workspace created400: Invalid input500: Server error
- GET/PUT/DELETE
/workspaces/{slug} - Security: Bearer
- PUT Request Body:
name,description
- Responses:
200: Workspace retrieved/updated/deleted404: Workspace not found
- GET
/workspaces/{slug}/tasks - POST
/workspaces/{slug}/tasks - Security: Bearer
- POST Request Body:
title(required),description,status,priority,dueDate,assigneeId
- Responses:
200: Tasks retrieved201: Task created400: Invalid input404: Workspace not found
- GET/PUT/DELETE
/workspaces/{slug}/tasks/{taskId} - Security: Bearer
- PUT Request Body:
- Any task property
- Responses:
200: Task retrieved/updated/deleted404: Task not found
- GET
/tasks/{taskId}/comments - POST
/tasks/{taskId}/comments - Security: Bearer
- POST Request Body:
content(string, required)
- Responses:
200: Comments retrieved201: Comment created400: Invalid input404: Task not found
- GET/PUT/DELETE
/tasks/{taskId}/comments/{commentId} - Security: Bearer
- PUT Request Body:
content(string, required)
- Responses:
200: Comment retrieved/updated/deleted404: Comment not found
- GET
/tasks/{taskId}/attachments - POST
/tasks/{taskId}/attachments - Security: Bearer
- POST Request:
multipart/form-datawithfile - Responses:
200: Attachments retrieved201: Attachment uploaded400: Invalid file404: Task not found
- GET/DELETE
/attachments/{attachmentId} - Security: Bearer
- Responses:
200: Attachment retrieved/deleted404: Attachment not found
- GET
/workspaces/{slug}/statistics - Security: Bearer
- Description: Get workspace statistics (tasks by status/priority, completion rate, team member count)
- Responses:
200: Statistics retrieved404: Workspace not found
- Endpoint:
PUT /api/users/fcm-token - Authentication: Required
- Request Body:
{ "fcmToken": "user_fcm_token_for_push_notifications" } - Success Response:
200 OK - Error Response:
400 Bad Request,401 Unauthorized,500 Internal Server Error - Description: Updates the Firebase Cloud Messaging token for the authenticated user to enable push notifications.
- Endpoint:
PUT /api/users/knock-token - Authentication: Required
- Request Body:
{ "knockToken": "user_knock_token_for_notifications" } - Success Response:
200 OK - Error Response:
400 Bad Request,401 Unauthorized,500 Internal Server Error - Description: Updates the Knock token for the authenticated user to enable notifications via Knock Labs.
All error responses follow the Error schema, providing an error message and a success: false flag.
For further details, refer to the OpenAPI YAML specification or contact the API maintainer.