openapi: 3.0.3 info: title: 'Taskify API Documentation' description: 'This is the API documentation for the taskify.' version: 1.0.0 servers: - url: 'http://127.0.0.1:8000' paths: /api/user/fcm-token: patch: summary: 'Update FCM Token.' operationId: updateFCMToken description: 'This endpoint allows an authenticated user or client to update their FCM token for push notifications.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'FCM token updated successfully.' properties: error: type: boolean example: false message: type: string example: 'FCM token updated successfully.' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: fcm_token: type: string description: 'The new FCM token for push notifications.' example: 'dXkJz7KYZ9o:APA91bGfLa_qwAeD...' required: - fcm_token security: [] /api/leave-requests/get-calendar-data: get: summary: '' operationId: getApiLeaveRequestsGetCalendarData description: '' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 401: description: '' content: application/json: schema: type: object example: error: false message: Unauthorized properties: error: type: boolean example: false message: type: string example: Unauthorized tags: - Endpoints security: [] '/api/estimates-invoices/pdf/{id}': get: summary: '' operationId: getApiEstimatesInvoicesPdfId description: '' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 401: description: '' content: application/json: schema: type: object example: error: false message: Unauthorized properties: error: type: boolean example: false message: type: string example: Unauthorized tags: - Endpoints security: [] parameters: - in: path name: id description: 'The ID of the pdf.' example: rerum required: true schema: type: string /api/users/signup: post: summary: 'Register a new user.' operationId: registerANewUser description: 'This endpoint allows a new user to sign up by providing necessary details.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Account created successfully.\",\n\"data\": {\n\"id\": 225,\n\"first_name\": \"Test\",\n\"last_name\": \"User\",\n\"role\": \"admin\",\n\"email\": \"test.user@example.com\",\n\"phone\": null,\n\"dob\": null,\n\"doj\": null,\n\"address\": null,\n\"city\": null,\n\"state\": null,\n\"country\": null,\n\"zip\": null,\n\"photo\": \"https://test-taskify.infinitietech.com/storage/photos/no-image.jpg\",\n\"status\": 0,\n\"created_at\": \"13-08-2024 14:59:38\",\n\"updated_at\": \"13-08-2024 14:59:38\"\n\"assigned\": {\n\"projects\": 0,\n\"tasks\": 0\n}\n}\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: email: - 'The email field is required.' - 'The email has already been taken.' password: - 'The password must be at least 6 characters.' role: - 'The role field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: email: type: array example: - 'The email field is required.' - 'The email has already been taken.' items: type: string password: type: array example: - 'The password must be at least 6 characters.' items: type: string role: type: array example: - 'The role field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Account couldn't be created, please contact the admin for assistance." properties: error: type: boolean example: true message: type: string example: "Account couldn't be created, please contact the admin for assistance." tags: - 'User Authentication' requestBody: required: true content: application/json: schema: type: object properties: type: type: string description: "The type of account ('member' for team member, 'client' for client)." example: member first_name: type: string description: 'The first name of the user.' example: John last_name: type: string description: 'The last name of the user.' example: Doe email: type: string description: 'The email address of the user or client.' example: john.doe@example.com password: type: string description: 'The password for the account.' example: password123 password_confirmation: type: string description: "The confirmation of the password. Must match 'password'." example: password123 company: type: string description: 'nullable The company name.' example: 'Acme Inc.' fcm_token: type: string description: 'nullable The optional FCM token for push notifications.' example: cXJ1AqT6B... required: - type - first_name - last_name - email - password - password_confirmation security: [] /api/users/login: post: summary: 'Log in an existing user.' operationId: logInAnExistingUser description: 'This endpoint allows a user to log in by providing their email and password. Upon successful authentication, a token is returned for accessing protected resources.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Logged in successfully.' token: 15|ANl9HwfqiiUxdOmNWba5qKhzfk3h1fyi8ZUoYbH8de8d3534 data: user_id: 7 workspace_id: 6 my_locale: en locale: en properties: error: type: boolean example: false message: type: string example: 'Logged in successfully.' token: type: string example: 15|ANl9HwfqiiUxdOmNWba5qKhzfk3h1fyi8ZUoYbH8de8d3534 data: type: object properties: user_id: type: integer example: 7 workspace_id: type: integer example: 6 my_locale: type: string example: en locale: type: string example: en 401: description: '' content: application/json: schema: type: object example: error: true message: Unauthorized properties: error: type: boolean example: true message: type: string example: Unauthorized 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: email: - 'The email field is required.' password: - 'The password field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: email: type: array example: - 'The email field is required.' items: type: string password: type: array example: - 'The password field is required.' items: type: string tags: - 'User Authentication' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The email of the user.' example: john.doe@example.com password: type: string description: 'The password for the user.' example: password123 fcm_token: type: string description: 'nullable The optional FCM token for push notifications.' example: cXJ1AqT6B... required: - email - password security: [] /api/password/reset-request: post: summary: 'Send Password Reset Link.' operationId: sendPasswordResetLink description: 'This endpoint allows a user or client to request a password reset link by providing their email and account type.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Password reset link emailed successfully.' properties: error: type: boolean example: false message: type: string example: 'Password reset link emailed successfully.' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Account not found.' properties: error: type: boolean example: true message: type: string example: 'Account not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: "Password reset link couldn't be sent, please check email settings." properties: error: type: boolean example: true message: type: string example: "Password reset link couldn't be sent, please check email settings." tags: - 'User Authentication' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The email address of the user or client.' example: john.doe@example.com account_type: type: string description: "The type of account ('user' for normal users, 'client' for clients)." example: user required: - email - account_type security: [] /api/password/reset: post: summary: 'Reset Password.' operationId: resetPassword description: 'This endpoint allows a user or client to reset their password using a valid token.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Password has been reset successfully.' properties: error: type: boolean example: false message: type: string example: 'Password has been reset successfully.' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Account not found.' properties: error: type: boolean example: true message: type: string example: 'Account not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Password reset failed. Please try again later.' properties: error: type: boolean example: true message: type: string example: 'Password reset failed. Please try again later.' tags: - 'User Authentication' requestBody: required: true content: application/json: schema: type: object properties: token: type: string description: 'The password reset token provided via the reset link.' example: abc123 email: type: string description: 'The email address of the user or client.' example: john.doe@example.com password: type: string description: 'The new password for the account. Must be at least 6 characters and confirmed.' example: newPassword123 password_confirmation: type: string description: "The confirmation of the new password. Must match 'password'." example: newPassword123 account_type: type: string description: "The type of account ('user' for normal users, 'client' for clients)." example: user required: - token - email - password - password_confirmation - account_type security: [] /api/user: get: summary: "Retrieve the authenticated user's profile." operationId: retrieveTheAuthenticatedUsersProfile description: 'This endpoint returns the profile information of the currently authenticated user. The user must be authenticated to access their profile details.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Profile details retrieved successfully' data: id: 7 first_name: Madhavan last_name: Vaidya role: admin email: admin@gmail.com phone: '9099882203' dob: 17-06-2024 doj: 03-10-2022 address: Devonshire city: Windsor state: 'ON' country: Canada zip: '123654' photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' status: 1 created_at: '03-01-2023 10:37:20' updated_at: '13-08-2024 14:16:45' assigned: projects: 11 tasks: 9 is_admin_or_leave_editor: true is_admin_or_has_all_data_access: true properties: error: type: boolean example: false message: type: string example: 'Profile details retrieved successfully' data: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya role: type: string example: admin email: type: string example: admin@gmail.com phone: type: string example: '9099882203' dob: type: string example: 17-06-2024 doj: type: string example: 03-10-2022 address: type: string example: Devonshire city: type: string example: Windsor state: type: string example: 'ON' country: type: string example: Canada zip: type: string example: '123654' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' status: type: integer example: 1 created_at: type: string example: '03-01-2023 10:37:20' updated_at: type: string example: '13-08-2024 14:16:45' assigned: type: object properties: projects: type: integer example: 11 tasks: type: integer example: 9 is_admin_or_leave_editor: type: boolean example: true is_admin_or_has_all_data_access: type: boolean example: true tags: - 'Profile Management' /api/users/photo: post: summary: 'Update the profile picture of a logged-in user or a specified user/client.' operationId: updateTheProfilePictureOfALoggedInUserOrASpecifiedUserclient description: "This endpoint allows the authenticated user to update their profile picture.\nIf both `id` and `type` are provided, the profile picture for the specified user or client will be updated.\nIf not, the profile picture of the logged-in user will be updated." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Profile picture updated successfully.' data: id: 7 first_name: Madhavan last_name: Vaidya role: admin email: admin@gmail.com phone: '9099882203' dob: 17-06-2024 doj: 03-10-2022 address: Devonshire city: Windsor state: 'ON' country: Canada zip: '123654' photo: 'https://test-taskify.infinitietech.com/storage/photos/atEj9NKCeAJhM5VqBN69mFKHntHbZkPUl2Sa22RA.webp' status: 1 created_at: '03-01-2023 10:37:20' updated_at: '13-08-2024 18:58:34' assigned: projects: 11 tasks: 21 properties: error: type: boolean example: false message: type: string example: 'Profile picture updated successfully.' data: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya role: type: string example: admin email: type: string example: admin@gmail.com phone: type: string example: '9099882203' dob: type: string example: 17-06-2024 doj: type: string example: 03-10-2022 address: type: string example: Devonshire city: type: string example: Windsor state: type: string example: 'ON' country: type: string example: Canada zip: type: string example: '123654' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/atEj9NKCeAJhM5VqBN69mFKHntHbZkPUl2Sa22RA.webp' status: type: integer example: 1 created_at: type: string example: '03-01-2023 10:37:20' updated_at: type: string example: '13-08-2024 18:58:34' assigned: type: object properties: projects: type: integer example: 11 tasks: type: integer example: 21 - description: '' type: object example: error: true message: 'No profile picture selected!' properties: error: type: boolean example: true message: type: string example: 'No profile picture selected!' - description: '' type: object example: error: true message: 'User not found' data: [] properties: error: type: boolean example: true message: type: string example: 'User not found' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: "Profile picture couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Profile picture couldn't be updated." tags: - 'Profile Management' requestBody: required: true content: multipart/form-data: schema: type: object properties: id: type: integer description: 'The ID of the user or client whose profile picture is being updated. Required if `type` is provided.' example: 1 type: type: string description: "The type of the entity whose profile picture is being updated. Must be either 'user' or 'client'." example: user upload: type: string format: binary description: 'The file of the new profile picture to be uploaded.' required: - id - type - upload '/api/users/{id}/profile': post: summary: 'Update the profile details of a logged-in user.' operationId: updateTheProfileDetailsOfALoggedInUser description: 'This endpoint allows the authenticated user to update their profile details such as name, email, address, and other relevant information.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Profile details updated successfully.' data: id: 7 first_name: Madhavan last_name: Vaidya role: admin email: admin@gmail.com phone: '9099882203' dob: 17-06-2024 doj: 03-10-2022 address: Devonshire city: Windsor state: 'ON' country: Canada zip: '123654' photo: 'https://test-taskify.infinitietech.com/storage/photos/atEj9NKCeAJhM5VqBN69mFKHntHbZkPUl2Sa22RA.webp' status: 1 created_at: '03-01-2023 10:37:20' updated_at: '13-08-2024 18:58:34' assigned: projects: 11 tasks: 21 properties: error: type: boolean example: false message: type: string example: 'Profile details updated successfully.' data: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya role: type: string example: admin email: type: string example: admin@gmail.com phone: type: string example: '9099882203' dob: type: string example: 17-06-2024 doj: type: string example: 03-10-2022 address: type: string example: Devonshire city: type: string example: Windsor state: type: string example: 'ON' country: type: string example: Canada zip: type: string example: '123654' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/atEj9NKCeAJhM5VqBN69mFKHntHbZkPUl2Sa22RA.webp' status: type: integer example: 1 created_at: type: string example: '03-01-2023 10:37:20' updated_at: type: string example: '13-08-2024 18:58:34' assigned: type: object properties: projects: type: integer example: 11 tasks: type: integer example: 21 - description: '' type: object example: error: true message: 'Validation error: The email has already been taken.' properties: error: type: boolean example: true message: type: string example: 'Validation error: The email has already been taken.' - description: '' type: object example: error: true message: 'User not found' data: [] properties: error: type: boolean example: true message: type: string example: 'User not found' data: type: array example: [] 500: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Profile details couldn\\'t be updated.\"\n}" tags: - 'Profile Management' requestBody: required: true content: application/json: schema: type: object properties: first_name: type: string description: "The user's first name." example: Madhavan last_name: type: string description: "The user's last name." example: Vaidya email: type: string description: "The user's email address. Can only be edited if `is_admin_or_has_all_data_access` is true for the logged-in user." example: admin@gmail.com role: type: integer description: 'The ID of the role for the user. If the authenticated user is an admin, the provided role will be used. If the authenticated user is not an admin, the current role of the user will be used, regardless of the input.' example: 1 phone: type: string description: "The user's phone number." example: '9099882203' country_code: type: string description: 'The country code for the phone number.' example: '+91' country_iso_code: type: string description: 'nullable The ISO code for the phone number.' example: in dob: type: date description: "The user's date of birth." example: 17-06-2024 doj: type: date description: "The user's date of joining." example: 03-10-2022 address: type: string description: "The user's address." example: Devonshire city: type: string description: "The user's city." example: Windsor state: type: string description: "The user's state." example: 'ON' country: type: string description: "The user's country." example: Canada zip: type: string description: "The user's zip code." example: '123654' password: type: string description: "The user's new password (if changing)." example: '12345678' password_confirmation: type: string description: 'The password confirmation (if changing password).' example: '12345678' required: - first_name - last_name - email parameters: - in: path name: id description: 'The ID of the user whose profile is being updated.' example: 6 required: true schema: type: integer /api/account/destroy: delete: summary: 'Delete account of a logged-in user.' operationId: deleteAccountOfALoggedInUser description: 'This endpoint allows the authenticated user to delete their account.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Account deleted successfully.\"\n \"data\": []\n}" 404: description: '' content: application/json: schema: type: object example: error: true message: 'User not found' data: [] properties: error: type: boolean example: true message: type: string example: 'User not found' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: "Account couldn't be deleted." properties: error: type: boolean example: true message: type: string example: "Account couldn't be deleted." tags: - 'Profile Management' /api/upcoming-birthdays: get: summary: 'List or search users with birthdays today or upcoming.' operationId: listOrSearchUsersWithBirthdaysTodayOrUpcoming description: 'This endpoint retrieves a list of users with birthdays occurring today or within a specified range of days. The user must be authenticated to perform this action.' parameters: - in: query name: search description: 'Optional. The search term to filter users by first name or last name or combination of first name and last name or User ID or date of birth.' example: John required: false schema: type: string description: 'Optional. The search term to filter users by first name or last name or combination of first name and last name or User ID or date of birth.' example: John - in: query name: order description: 'Optional. The sort order for the `dob` column. Acceptable values are `ASC` or `DESC`. Default is `ASC`.' example: DESC required: false schema: type: string description: 'Optional. The sort order for the `dob` column. Acceptable values are `ASC` or `DESC`. Default is `ASC`.' example: DESC - in: query name: upcoming_days description: 'Optional. The number of days from today to consider for upcoming birthdays. Default is 30.' example: 15 required: false schema: type: integer description: 'Optional. The number of days from today to consider for upcoming birthdays. Default is 30.' example: 15 - in: query name: user_ids description: 'Optional. The specific user IDs to filter the results.' example: - 123 - 456 required: false schema: type: array description: 'Optional. The specific user IDs to filter the results.' example: - 123 - 456 items: type: string - in: query name: limit description: 'Optional. The number of results to return per page. Default is 15.' example: 10 required: false schema: type: integer description: 'Optional. The number of results to return per page. Default is 15.' example: 10 - in: query name: offset description: 'Optional. The number of results to skip before starting to collect the result set. Default is 0.' example: 5 required: false schema: type: integer description: 'Optional. The number of results to skip before starting to collect the result set. Default is 0.' example: 5 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Upcoming birthdays retrieved successfully' total: 1 data: - id: 1 member: 'John Doe' photo: 'http://example.com/storage/photos/john_doe.jpg' birthday_count: 30 days_left: 10 dob: 'Tue, 2024-08-08' properties: error: type: boolean example: false message: type: string example: 'Upcoming birthdays retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 member: 'John Doe' photo: 'http://example.com/storage/photos/john_doe.jpg' birthday_count: 30 days_left: 10 dob: 'Tue, 2024-08-08' items: type: object properties: id: type: integer example: 1 member: type: string example: 'John Doe' photo: type: string example: 'http://example.com/storage/photos/john_doe.jpg' birthday_count: type: integer example: 30 days_left: type: integer example: 10 dob: type: string example: 'Tue, 2024-08-08' - description: '' type: object example: error: true message: 'Upcoming birthdays not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Upcoming birthdays not found.' data: type: array example: [] tags: - 'Dashboard Management' /api/upcoming-work-anniversaries: get: summary: 'List or search users with work anniversaries today or upcoming.' operationId: listOrSearchUsersWithWorkAnniversariesTodayOrUpcoming description: 'This endpoint retrieves a list of users with work anniversaries occurring today or within a specified range of days. The user must be authenticated to perform this action.' parameters: - in: query name: search description: 'Optional. The search term to filter users by first name or last name or combination of first name and last name or User ID or date of joining.' example: John required: false schema: type: string description: 'Optional. The search term to filter users by first name or last name or combination of first name and last name or User ID or date of joining.' example: John - in: query name: order description: 'Optional. The sort order for the `doj` column. Acceptable values are `ASC` or `DESC`. Default is `ASC`.' example: DESC required: false schema: type: string description: 'Optional. The sort order for the `doj` column. Acceptable values are `ASC` or `DESC`. Default is `ASC`.' example: DESC - in: query name: upcoming_days description: 'Optional. The number of days from today to consider for upcoming work anniversaries. Default is 30.' example: 15 required: false schema: type: integer description: 'Optional. The number of days from today to consider for upcoming work anniversaries. Default is 30.' example: 15 - in: query name: user_ids description: 'Optional. The specific user IDs to filter the results.' example: - 123 - 456 required: false schema: type: array description: 'Optional. The specific user IDs to filter the results.' example: - 123 - 456 items: type: string - in: query name: limit description: 'Optional. The number of results to return per page. Default is 15.' example: 10 required: false schema: type: integer description: 'Optional. The number of results to return per page. Default is 15.' example: 10 - in: query name: offset description: 'Optional. The number of results to skip before starting to collect the result set. Default is 0.' example: 5 required: false schema: type: integer description: 'Optional. The number of results to skip before starting to collect the result set. Default is 0.' example: 5 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Upcoming work anniversaries retrieved successfully' total: 1 data: - id: 1 member: 'John Doe' photo: 'http://example.com/storage/photos/john_doe.jpg' anniversary_count: 5 days_left: 10 doj: 'Tue, 2024-08-08' properties: error: type: boolean example: false message: type: string example: 'Upcoming work anniversaries retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 member: 'John Doe' photo: 'http://example.com/storage/photos/john_doe.jpg' anniversary_count: 5 days_left: 10 doj: 'Tue, 2024-08-08' items: type: object properties: id: type: integer example: 1 member: type: string example: 'John Doe' photo: type: string example: 'http://example.com/storage/photos/john_doe.jpg' anniversary_count: type: integer example: 5 days_left: type: integer example: 10 doj: type: string example: 'Tue, 2024-08-08' - description: '' type: object example: error: true message: 'Upcoming work anniversaries not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Upcoming work anniversaries not found.' data: type: array example: [] tags: - 'Dashboard Management' /api/members-on-leave: get: summary: 'List members currently on leave or scheduled to be on leave.' operationId: listMembersCurrentlyOnLeaveOrScheduledToBeOnLeave description: "This endpoint retrieves a list of members who are currently on leave or scheduled to be on leave within a specified range of days.\nThe user must be authenticated to perform this action." parameters: - in: query name: search description: 'Optional. The search term to filter users by first name or last name or combination of first name and last name or User ID or date of joining.' example: John required: false schema: type: string description: 'Optional. The search term to filter users by first name or last name or combination of first name and last name or User ID or date of joining.' example: John - in: query name: sort description: 'Optional. The field to sort by. Acceptable values are `from_date` and `to_date`. Default is `from_date`.' example: to_date required: false schema: type: string description: 'Optional. The field to sort by. Acceptable values are `from_date` and `to_date`. Default is `from_date`.' example: to_date - in: query name: order description: 'Optional. The sort order. Acceptable values are `ASC` or `DESC`. Default is `ASC`.' example: DESC required: false schema: type: string description: 'Optional. The sort order. Acceptable values are `ASC` or `DESC`. Default is `ASC`.' example: DESC - in: query name: upcoming_days description: 'Optional. The number of days from today to consider for upcoming leave. Default is 30.' example: 15 required: false schema: type: integer description: 'Optional. The number of days from today to consider for upcoming leave. Default is 30.' example: 15 - in: query name: user_ids description: 'Optional. The specific user IDs to filter the results.' example: - 123 - 456 required: false schema: type: array description: 'Optional. The specific user IDs to filter the results.' example: - 123 - 456 items: type: string - in: query name: limit description: 'Optional. The number of results to return per page. Default is 15.' example: 10 required: false schema: type: integer description: 'Optional. The number of results to return per page. Default is 15.' example: 10 - in: query name: offset description: 'Optional. The number of results to skip before starting to collect the result set. Default is 0.' example: 5 required: false schema: type: integer description: 'Optional. The number of results to skip before starting to collect the result set. Default is 0.' example: 5 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Members on leave retrieved successfully.' total: 1 data: - id: 1 member: 'John Doe' photo: 'http://example.com/storage/photos/john_doe.jpg' from_date: 'Mon, 2024-07-15' to_date: 'Fri, 2024-07-19' type: Full duration: '5 days' days_left: 0 properties: error: type: boolean example: false message: type: string example: 'Members on leave retrieved successfully.' total: type: integer example: 1 data: type: array example: - id: 1 member: 'John Doe' photo: 'http://example.com/storage/photos/john_doe.jpg' from_date: 'Mon, 2024-07-15' to_date: 'Fri, 2024-07-19' type: Full duration: '5 days' days_left: 0 items: type: object properties: id: type: integer example: 1 member: type: string example: 'John Doe' photo: type: string example: 'http://example.com/storage/photos/john_doe.jpg' from_date: type: string example: 'Mon, 2024-07-15' to_date: type: string example: 'Fri, 2024-07-19' type: type: string example: Full duration: type: string example: '5 days' days_left: type: integer example: 0 - description: '' type: object example: error: true message: 'Members on leave not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Members on leave not found.' data: type: array example: [] tags: - 'Dashboard Management' /api/dashboard/statistics: get: summary: 'Get Statistics' operationId: getStatistics description: 'This endpoint retrieves workspace-specific statistics related to projects, tasks, users, clients, todos, and meetings. The user must be authenticated and have the necessary permissions to manage (if applicable) each respective module.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Statistics retrieved successfully' data: total_projects: 8 total_tasks: 8 total_users: 8 total_clients: 8 total_meetings: 8 total_todos: 0 completed_todos: 0 pending_todos: 0 status_wise_projects: - id: 1 title: 'In Progress' color: primary total_projects: 4 - id: 2 title: Completed color: success total_projects: 4 status_wise_tasks: - id: 1 title: 'In Progress' color: primary total_tasks: 4 - id: 2 title: Completed color: success total_tasks: 4 properties: error: type: boolean example: false message: type: string example: 'Statistics retrieved successfully' data: type: object properties: total_projects: type: integer example: 8 total_tasks: type: integer example: 8 total_users: type: integer example: 8 total_clients: type: integer example: 8 total_meetings: type: integer example: 8 total_todos: type: integer example: 0 completed_todos: type: integer example: 0 pending_todos: type: integer example: 0 status_wise_projects: type: array example: - id: 1 title: 'In Progress' color: primary total_projects: 4 - id: 2 title: Completed color: success total_projects: 4 items: type: object properties: id: type: integer example: 1 title: type: string example: 'In Progress' color: type: string example: primary total_projects: type: integer example: 4 status_wise_tasks: type: array example: - id: 1 title: 'In Progress' color: primary total_tasks: 4 - id: 2 title: Completed color: success total_tasks: 4 items: type: object properties: id: type: integer example: 1 title: type: string example: 'In Progress' color: type: string example: primary total_tasks: type: integer example: 4 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while retrieving statistics: Internal server error message' properties: error: type: boolean example: true message: type: string example: 'An error occurred while retrieving statistics: Internal server error message' tags: - 'Dashboard Management' '/api/projects/{id}': get: summary: 'List or search projects.' operationId: listOrSearchProjects description: 'This endpoint retrieves a list of projects based on various filters. The user must be authenticated to perform this action. The request allows filtering by status, user, client, priority, tag, date ranges, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter projects by title or id.' example: Project required: false schema: type: string description: 'optional The search term to filter projects by title or id.' example: Project - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, status, priority, start_date, end_date, budget, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, status, priority, start_date, end_date, budget, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: status_ids description: 'optional An array of status IDs to filter projects by.' example: - 2 - 3 required: false schema: type: array description: 'optional An array of status IDs to filter projects by.' example: - 2 - 3 items: type: string - in: query name: user_ids description: 'optional An array of user IDs to filter projects by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'optional An array of user IDs to filter projects by.' example: - 1 - 2 - 3 items: type: string - in: query name: client_ids description: 'optional An array of client IDs to filter projects by.' example: - 5 - 6 required: false schema: type: array description: 'optional An array of client IDs to filter projects by.' example: - 5 - 6 items: type: string - in: query name: priority_ids description: 'optional An array of priority IDs to filter projects by.' example: - 1 - 2 required: false schema: type: array description: 'optional An array of priority IDs to filter projects by.' example: - 1 - 2 items: type: string - in: query name: tag_ids description: 'optional An array of tag IDs to filter projects by.' example: - 1 - 2 required: false schema: type: array description: 'optional An array of tag IDs to filter projects by.' example: - 1 - 2 items: type: string - in: query name: project_start_date_from description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: project_start_date_to description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: project_end_date_from description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: project_end_date_to description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: is_favorites description: 'optional Filter projects marked as favorites.' example: true required: false schema: type: boolean description: 'optional Filter projects marked as favorites.' example: true - in: query name: limit description: 'optional The number of projects per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of projects per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Projects retrieved successfully' total: 1 data: - id: 351 title: rwer status: 'Rel test' priority: Default users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' clients: [] tags: [] start_date: 14-06-2024 end_date: 14-06-2024 budget: '' created_at: '14-06-2024 17:50:09' updated_at: '17-06-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Projects retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 351 title: rwer status: 'Rel test' priority: Default users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' clients: [] tags: [] start_date: 14-06-2024 end_date: 14-06-2024 budget: '' created_at: '14-06-2024 17:50:09' updated_at: '17-06-2024 19:08:16' items: type: object properties: id: type: integer example: 351 title: type: string example: rwer status: type: string example: 'Rel test' priority: type: string example: Default users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: [] tags: type: array example: [] start_date: type: string example: 14-06-2024 end_date: type: string example: 14-06-2024 budget: type: string example: '' created_at: type: string example: '14-06-2024 17:50:09' updated_at: type: string example: '17-06-2024 19:08:16' - description: '' type: object example: error: true message: 'Project not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Project not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Projects not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Projects not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Project Management' requestBody: required: false content: application/json: schema: type: object properties: user_ids: type: array description: '' example: - 12 items: type: integer client_ids: type: array description: '' example: - 19 items: type: integer priority_ids: type: array description: '' example: - 13 items: type: integer tag_ids: type: array description: '' example: - 19 items: type: integer status_ids: type: array description: '' example: - 11 items: type: integer parameters: - in: path name: id description: 'Optional parameter. optional The ID of the project to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/projects/store: post: summary: 'Create a new project.' operationId: createANewProject description: 'This endpoint creates a new project with the provided details. The user must be authenticated to perform this action. The request validates various fields, including title, status, priority, dates, and task accessibility.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Project created successfully.' id: 438 data: id: 438 title: 'Res Test' status: Default priority: dsfdsf users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' - id: 185 first_name: Admin last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' clients: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: - id: 45 title: 'Tag from update project' start_date: null end_date: null budget: '1000' task_accessibility: assigned_users description: null note: null favorite: 0 created_at: '07-08-2024 14:38:51' updated_at: '07-08-2024 14:38:51' properties: error: type: boolean example: false message: type: string example: 'Project created successfully.' id: type: integer example: 438 data: type: object properties: id: type: integer example: 438 title: type: string example: 'Res Test' status: type: string example: Default priority: type: string example: dsfdsf users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' - id: 185 first_name: Admin last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 103 first_name: type: string example: Test last_name: type: string example: Test photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: type: array example: - id: 45 title: 'Tag from update project' items: type: object properties: id: type: integer example: 45 title: type: string example: 'Tag from update project' start_date: type: string example: null end_date: type: string example: null budget: type: string example: '1000' task_accessibility: type: string example: assigned_users description: type: string example: null note: type: string example: null favorite: type: integer example: 0 created_at: type: string example: '07-08-2024 14:38:51' updated_at: type: string example: '07-08-2024 14:38:51' - description: '' type: object example: error: true message: 'You are not authorized to set this status.' properties: error: type: boolean example: true message: type: string example: 'You are not authorized to set this status.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: title: - 'The title field is required.' status_id: - 'The status_id field is required.' start_date: - 'The start date must be before or equal to the end date.' budget: - 'The budget format is invalid.' task_accessibility: - 'The task accessibility must be either project_users or assigned_users.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string status_id: type: array example: - 'The status_id field is required.' items: type: string start_date: type: array example: - 'The start date must be before or equal to the end date.' items: type: string budget: type: array example: - 'The budget format is invalid.' items: type: string task_accessibility: type: array example: - 'The task accessibility must be either project_users or assigned_users.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the project.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the project.' tags: - 'Project Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the project.' example: 'New Website Launch' status_id: type: integer description: "The ID of the project's status." example: 1 priority_id: type: integer description: "optional The ID of the project's priority." example: 2 start_date: type: string|null description: 'optional The start date of the project in the format specified in the general settings.' example: '2024-08-01' end_date: type: string|null description: 'optional The end date of the project in the format specified in the general settings.' example: '2024-08-31' budget: type: string|null description: 'optional Only digits, commas as thousand separators, and a single decimal point are allowed. digits can optionally be grouped in thousands with commas, where each group of digits must be exactly three digits long (e.g., 1,000 is correct; 10,0000 is not).' example: '5000.00' task_accessibility: type: string description: "Indicates who can access the task. Must be either 'project_users' or 'assigned_users'." example: project_users description: type: string|null description: 'optional A description of the project.' example: 'A project to launch a new company website.' note: type: string|null description: 'optional Additional notes for the project.' example: 'Ensure all team members are informed.' user_id: type: array|null description: 'optional Array of user IDs to be associated with the project.' example: '[1, 2, 3]' client_id: type: array|null description: 'optional Array of client IDs to be associated with the project.' example: '[5, 6]' tag_ids: type: array|null description: 'optional Array of tag IDs to be associated with the project.' example: '[10, 11]' clientCanDiscuss: type: string description: "optional Indicates if the client can participate in project discussions. Can only specify if `is_admin_or_has_all_data_access` is true for the logged-in user; otherwise, it will be considered 0 by default. The value should be 'on' to allow client participation." example: 'on' required: - title - status_id - task_accessibility /api/projects/update: post: summary: 'Update an existing project.' operationId: updateAnExistingProject description: 'This endpoint updates an existing project with the provided details. The user must be authenticated to perform this action. The request validates various fields, including title, status, priority, dates, and task accessibility.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Project updated successfully.' id: 438 data: id: 438 title: 'Res Test' status: Default priority: dsfdsf users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' - id: 185 first_name: Admin last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' clients: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: - id: 45 title: 'Tag from update project' start_date: null end_date: null budget: '1000' task_accessibility: assigned_users description: null note: null favorite: 0 created_at: '07-08-2024 14:38:51' updated_at: '07-08-2024 14:38:51' properties: error: type: boolean example: false message: type: string example: 'Project updated successfully.' id: type: integer example: 438 data: type: object properties: id: type: integer example: 438 title: type: string example: 'Res Test' status: type: string example: Default priority: type: string example: dsfdsf users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' - id: 185 first_name: Admin last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 103 first_name: type: string example: Test last_name: type: string example: Test photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: type: array example: - id: 45 title: 'Tag from update project' items: type: object properties: id: type: integer example: 45 title: type: string example: 'Tag from update project' start_date: type: string example: null end_date: type: string example: null budget: type: string example: '1000' task_accessibility: type: string example: assigned_users description: type: string example: null note: type: string example: null favorite: type: integer example: 0 created_at: type: string example: '07-08-2024 14:38:51' updated_at: type: string example: '07-08-2024 14:38:51' - description: '' type: object example: error: true message: 'You are not authorized to set this status.' properties: error: type: boolean example: true message: type: string example: 'You are not authorized to set this status.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The project ID is required.' - 'The project ID does not exist in our records.' status_id: - 'The status field is required.' budget: - 'The budget format is invalid.' task_accessibility: - 'The task accessibility must be either project_users or assigned_users.' start_date: - 'The start date must be before or equal to the end date.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The project ID is required.' - 'The project ID does not exist in our records.' items: type: string status_id: type: array example: - 'The status field is required.' items: type: string budget: type: array example: - 'The budget format is invalid.' items: type: string task_accessibility: type: array example: - 'The task accessibility must be either project_users or assigned_users.' items: type: string start_date: type: array example: - 'The start date must be before or equal to the end date.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the project.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the project.' tags: - 'Project Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the project to update.' example: 1 title: type: string description: 'The title of the project.' example: 'Updated Project Title' status_id: type: integer description: "The ID of the project's status." example: 2 priority_id: type: integer description: "optional The ID of the project's priority." example: 3 budget: type: string|null description: 'optional Only digits, commas as thousand separators, and a single decimal point are allowed. digits can optionally be grouped in thousands with commas, where each group of digits must be exactly three digits long (e.g., 1,000 is correct; 10,0000 is not).' example: '5000.00' task_accessibility: type: string description: "Indicates who can access the task. Must be either 'project_users' or 'assigned_users'." example: assigned_users start_date: type: string|null description: 'optional The start date of the project in the format specified in the general settings.' example: '2024-08-01' end_date: type: string|null description: 'optional The end date of the project in the format specified in the general settings.' example: '2024-08-31' description: type: string|null description: 'optional A description of the project.' example: 'Updated project description.' note: type: string|null description: 'optional Additional notes for the project.' example: 'Updated note for the project.' user_id: type: array|null description: 'optional Array of user IDs to be associated with the project.' example: '[2, 3]' client_id: type: array|null description: 'optional Array of client IDs to be associated with the project.' example: '[5, 6]' tag_ids: type: array|null description: 'optional Array of tag IDs to be associated with the project.' example: '[10, 11]' clientCanDiscuss: type: string description: "optional Indicates if the client can participate in project discussions. Can only specify if `is_admin_or_has_all_data_access` is true for the logged-in user; otherwise, it will be considered current value by default. The value should be 'on' to allow client participation." example: 'on' required: - id - title - status_id - task_accessibility '/api/projects/{id}/favorite': patch: summary: 'Update the favorite status of a project.' operationId: updateTheFavoriteStatusOfAProject description: 'This endpoint updates whether a project is marked as a favorite or not. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Project favorite status updated successfully' data: id: 438 title: 'Res Test' status: Default priority: dsfdsf users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: - id: 45 title: 'Tag from update project' start_date: null end_date: null budget: '1000.00' task_accessibility: assigned_users description: null note: null favorite: 1 created_at: '07-08-2024 14:38:51' updated_at: '12-08-2024 13:36:10' properties: error: type: boolean example: false message: type: string example: 'Project favorite status updated successfully' data: type: object properties: id: type: integer example: 438 title: type: string example: 'Res Test' status: type: string example: Default priority: type: string example: dsfdsf users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 103 first_name: type: string example: Test last_name: type: string example: Test photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: type: array example: - id: 45 title: 'Tag from update project' items: type: object properties: id: type: integer example: 45 title: type: string example: 'Tag from update project' start_date: type: string example: null end_date: type: string example: null budget: type: string example: '1000.00' task_accessibility: type: string example: assigned_users description: type: string example: null note: type: string example: null favorite: type: integer example: 1 created_at: type: string example: '07-08-2024 14:38:51' updated_at: type: string example: '12-08-2024 13:36:10' - description: '' type: object example: error: true message: 'Project not found' data: [] properties: error: type: boolean example: true message: type: string example: 'Project not found' data: type: array example: [] 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: is_favorite: - 'The is favorite field must be either 0 or 1.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: is_favorite: type: array example: - 'The is favorite field must be either 0 or 1.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the favorite status.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the favorite status.' tags: - 'Project Management' requestBody: required: true content: application/json: schema: type: object properties: is_favorite: type: integer description: 'Indicates whether the project is a favorite. Use 1 for true and 0 for false.' example: 6 required: - is_favorite parameters: - in: path name: id description: 'The ID of the project to update.' example: 1 required: true schema: type: integer '/api/projects/{id}/pinned': patch: summary: 'Update the pinned status of a project.' operationId: updateThePinnedStatusOfAProject description: 'This endpoint updates whether a project is marked as pinned or not. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Project pinned status updated successfully\",\n\"data\": {\n \"id\": 438,\n \"title\": \"Res Test\"\n // Other project details will be included in the actual response\n}\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: is_pinned: - 'The is pinned field must be either 0 or 1.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: is_pinned: type: array example: - 'The is pinned field must be either 0 or 1.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the pinned status.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the pinned status.' tags: - 'Project Management' requestBody: required: true content: application/json: schema: type: object properties: is_pinned: type: integer description: 'Indicates whether the project is pinned. Use 1 for true and 0 for false.' example: 2 required: - is_pinned parameters: - in: path name: id description: 'The ID of the project to update.' example: 17 required: true schema: type: integer '/api/projects/{id}/status': patch: summary: 'Update the status of a project.' operationId: updateTheStatusOfAProject description: 'This endpoint updates the status of a specified project. The user must be authenticated and have permission to set the new status. A notification will be sent to all users and clients associated with the project.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Status updated successfully.' id: '438' type: project activity_message: 'Madhavan Vaidya updated project status from Default to vbnvbnvbn' data: id: 438 title: 'Res Test' status: vbnvbnvbn priority: dsfdsf users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: - id: 45 title: 'Tag from update project' start_date: null end_date: null budget: '1000.00' task_accessibility: assigned_users description: null note: null favorite: 1 created_at: '07-08-2024 14:38:51' updated_at: '12-08-2024 13:49:33' properties: error: type: boolean example: false message: type: string example: 'Status updated successfully.' id: type: string example: '438' type: type: string example: project activity_message: type: string example: 'Madhavan Vaidya updated project status from Default to vbnvbnvbn' data: type: object properties: id: type: integer example: 438 title: type: string example: 'Res Test' status: type: string example: vbnvbnvbn priority: type: string example: dsfdsf users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 103 first_name: type: string example: Test last_name: type: string example: Test photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: type: array example: - id: 45 title: 'Tag from update project' items: type: object properties: id: type: integer example: 45 title: type: string example: 'Tag from update project' start_date: type: string example: null end_date: type: string example: null budget: type: string example: '1000.00' task_accessibility: type: string example: assigned_users description: type: string example: null note: type: string example: null favorite: type: integer example: 1 created_at: type: string example: '07-08-2024 14:38:51' updated_at: type: string example: '12-08-2024 13:49:33' - description: '' type: object example: error: true message: 'You are not authorized to set this status.' properties: error: type: boolean example: true message: type: string example: 'You are not authorized to set this status.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The selected id is invalid.' statusId: - 'The selected status id is invalid.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The selected id is invalid.' items: type: string statusId: type: array example: - 'The selected status id is invalid.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Status couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Status couldn't be updated." tags: - 'Project Management' requestBody: required: true content: application/json: schema: type: object properties: statusId: type: integer description: 'The ID of the new status to set for the project.' example: 2 note: type: string description: 'optional An optional note to attach to the project update.' example: quisquam required: - statusId parameters: - in: path name: id description: 'The ID of the project whose status is to be updated.' example: 4 required: true schema: type: integer '/api/projects/{id}/priority': patch: summary: 'Update the priority of a project.' operationId: updateThePriorityOfAProject description: 'This endpoint updates the priority of a specified project. The user must be authenticated and have permission to set the new priority.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Priority updated successfully.' id: '438' type: project activity_message: 'Madhavan Vaidya updated project priority from Low to Medium' data: id: 438 title: 'Res Test' status: 'Test From Pro' priority: Medium users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: - id: 45 title: 'Tag from update project' start_date: null end_date: null budget: '1000.00' task_accessibility: assigned_users description: null note: null favorite: 1 created_at: '07-08-2024 14:38:51' updated_at: '12-08-2024 13:58:55' properties: error: type: boolean example: false message: type: string example: 'Priority updated successfully.' id: type: string example: '438' type: type: string example: project activity_message: type: string example: 'Madhavan Vaidya updated project priority from Low to Medium' data: type: object properties: id: type: integer example: 438 title: type: string example: 'Res Test' status: type: string example: 'Test From Pro' priority: type: string example: Medium users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 103 first_name: type: string example: Test last_name: type: string example: Test photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' tags: type: array example: - id: 45 title: 'Tag from update project' items: type: object properties: id: type: integer example: 45 title: type: string example: 'Tag from update project' start_date: type: string example: null end_date: type: string example: null budget: type: string example: '1000.00' task_accessibility: type: string example: assigned_users description: type: string example: null note: type: string example: null favorite: type: integer example: 1 created_at: type: string example: '07-08-2024 14:38:51' updated_at: type: string example: '12-08-2024 13:58:55' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The selected id is invalid.' priorityId: - 'The selected priority id is invalid.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The selected id is invalid.' items: type: string priorityId: type: array example: - 'The selected priority id is invalid.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Priority couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Priority couldn't be updated." tags: - 'Project Management' requestBody: required: true content: application/json: schema: type: object properties: priorityId: type: integer description: 'The ID of the new priority to set for the project.' example: 18 required: - priorityId parameters: - in: path name: id description: 'The ID of the project whose priority is to be updated.' example: 1 required: true schema: type: integer '/api/projects/destroy/{id}': delete: summary: 'Remove the specified project.' operationId: removeTheSpecifiedProject description: 'This endpoint deletes a project based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Project deleted successfully.' id: 1 title: 'Project Title' data: [] properties: error: type: boolean example: false message: type: string example: 'Project deleted successfully.' id: type: integer example: 1 title: type: string example: 'Project Title' data: type: array example: [] - description: '' type: object example: error: true message: 'Project not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Project not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the project.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the project.' tags: - 'Project Management' parameters: - in: path name: id description: 'The ID of the project to be deleted.' example: 1 required: true schema: type: integer '/api/projects/{id}/status-timelines': get: summary: 'Get project status timeline.' operationId: getProjectStatusTimeline description: 'This endpoint retrieves the status change history of a project, sorted in descending order.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Status timeline retrieved successfully.' status_timeline: - id: 1 status: 'In Progress' previous_status: Pending new_color: '#ffcc00' old_color: '#cccccc' changed_at: '2025-03-03' - id: 2 status: Completed previous_status: 'In Progress' new_color: '#00cc66' old_color: '#ffcc00' changed_at: '2025-03-05 16:00:00' properties: error: type: boolean example: false message: type: string example: 'Status timeline retrieved successfully.' status_timeline: type: array example: - id: 1 status: 'In Progress' previous_status: Pending new_color: '#ffcc00' old_color: '#cccccc' changed_at: '2025-03-03' - id: 2 status: Completed previous_status: 'In Progress' new_color: '#00cc66' old_color: '#ffcc00' changed_at: '2025-03-05 16:00:00' items: type: object properties: id: type: integer example: 1 status: type: string example: 'In Progress' previous_status: type: string example: Pending new_color: type: string example: '#ffcc00' old_color: type: string example: '#cccccc' changed_at: type: string example: '2025-03-03' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Project not found.' properties: error: type: boolean example: true message: type: string example: 'Project not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Could not retrieve status timeline.' properties: error: type: boolean example: true message: type: string example: 'Could not retrieve status timeline.' tags: - 'Project Management' parameters: - in: path name: id description: 'The ID of the project whose status timeline is to be retrieved.' example: 20 required: true schema: type: integer '/api/projects/{id}/mind-map': get: summary: 'Get Mind Map Data of a specific project.' operationId: getMindMapDataOfASpecificProject description: 'This endpoint retrieves mind map data of a specific project by its ID.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"data\": {\n \"id\": \"project_2\",\n \"topic\": \"hola\",\n\"link\": \"https://dev-taskify.taskhub.company/projects/information/2\",\n\"isroot\": true,\n\"level\": 1,\n\"children\": [\n{\n\"id\": \"tasks\",\n\"topic\": \"Tasks\",\n\"level\": 2,\n\"children\": [\n{\n\"id\": \"task_4\",\n\"topic\": \"Test\",\n\"link\": \"https://dev-taskify.taskhub.company/tasks/information/4\",\n\"children\": [\n{\n\"id\": \"task_users_4\",\n\"topic\": \"Users\",\n\"children\": [\n{\n\"id\": \"task_user_4_1\",\n\"topic\": \"Admin User\",\n\"link\": \"https://dev-taskify.taskhub.company/users/profile/1\"\n}\n]\n},\n{\n\"id\": \"task_clients_4\",\n\"topic\": \"Clients\",\n\"children\": []\n}\n]\n},\n{\n\"id\": \"task_5\",\n\"topic\": \"test\",\n\"link\": \"https://dev-taskify.taskhub.company/tasks/information/5\",\n\"children\": [\n{\n\"id\": \"task_users_5\",\n\"topic\": \"Users\",\n\"children\": [\n{\n\"id\": \"task_user_5_1\",\n\"topic\": \"Admin User\",\n\"link\": \"https://dev-taskify.taskhub.company/users/profile/1\"\n}\n]\n},\n{\n\"id\": \"task_clients_5\",\n\"topic\": \"Clients\",\n\"children\": []\n}\n]\n},\n{\n\"id\": \"task_6\",\n\"topic\": \"test 1\",\n\"link\": \"https://dev-taskify.taskhub.company/tasks/information/6\",\n\"children\": [\n{\n\"id\": \"task_users_6\",\n\"topic\": \"Users\",\n\"children\": [\n{\n\"id\": \"task_user_6_1\",\n\"topic\": \"Admin User\",\n\"link\": \"https://dev-taskify.taskhub.company/users/profile/1\"\n}\n]\n},\n{\n\"id\": \"task_clients_6\",\n\"topic\": \"Clients\",\n\"children\": []\n}\n]\n}\n]\n},\n{\n\"id\": \"users\",\n\"topic\": \"Users\",\n\"children\": [\n{\n\"id\": \"user_1\",\n\"topic\": \"Admin User\",\n\"link\": \"https://dev-taskify.taskhub.company/users/profile/1\"\n}\n]\n},\n{\n\"id\": \"clients\",\n\"topic\": \"Clients\",\n\"children\": []\n},\n{\n\"id\": \"milestones\",\n\"topic\": \"Milestones\",\n\"children\": []\n},\n{\n\"id\": \"media\",\n\"topic\": \"Media\",\n\"children\": []\n}\n]\n}" 404: description: '' content: application/json: schema: type: object example: error: true message: 'Project not found.' properties: error: type: boolean example: true message: type: string example: 'Project not found.' tags: - 'Project Management' parameters: - in: path name: id description: 'The ID of the data to retrieve.' example: 7 required: true schema: type: integer /api/milestones/store: post: summary: 'Store a new milestone.' operationId: storeANewMilestone description: 'This endpoint creates a new milestone for a specified project. The user must be authenticated and have permission to create milestones.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Milestone created successfully.' id: 12 type: milestone parent_type: project parent_id: 438 properties: error: type: boolean example: false message: type: string example: 'Milestone created successfully.' id: type: integer example: 12 type: type: string example: milestone parent_type: type: string example: project parent_id: type: integer example: 438 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: project_id: - 'The selected project_id is invalid.' title: - 'The title field is required.' cost: - 'The cost format is invalid.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: project_id: type: array example: - 'The selected project_id is invalid.' items: type: string title: type: array example: - 'The title field is required.' items: type: string cost: type: array example: - 'The cost format is invalid.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Milestone couldn't be created." properties: error: type: boolean example: true message: type: string example: "Milestone couldn't be created." tags: - 'Milestone Management' requestBody: required: true content: application/json: schema: type: object properties: project_id: type: integer description: 'The ID of the project to which the milestone belongs.' example: 2 title: type: string description: 'The title of the milestone.' example: assumenda status: type: string description: 'The status of the milestone.' example: magni start_date: type: date description: 'optional The start date of the milestone (YYYY-MM-DD).' example: voluptate end_date: type: date description: 'optional The end date of the milestone (YYYY-MM-DD).' example: at cost: type: numeric description: 'The cost of the milestone.' example: sed description: type: string description: 'optional A description of the milestone.' example: 'Asperiores quam et aut ex.' required: - project_id - title - status - cost '/api/milestones/{id}': get: summary: 'Get a list of milestones for a project.' operationId: getAListOfMilestonesForAProject description: "This endpoint retrieves all milestones associated with a given project.\nIt supports searching, filtering, and sorting functionalities." parameters: - in: query name: search description: 'optional Search for milestones by title, ID, cost, or description.' example: voluptatem required: false schema: type: string description: 'optional Search for milestones by title, ID, cost, or description.' example: voluptatem - in: query name: sort description: 'optional Field to sort by (default: "id").' example: autem required: false schema: type: string description: 'optional Field to sort by (default: "id").' example: autem - in: query name: order description: 'optional Sorting order (ASC/DESC, default: "DESC").' example: provident required: false schema: type: string description: 'optional Sorting order (ASC/DESC, default: "DESC").' example: provident - in: query name: statuses description: 'optional Filter by milestone statuses.' example: - quasi required: false schema: type: array description: 'optional Filter by milestone statuses.' example: - quasi items: type: string - in: query name: date_between_from description: 'date optional Filter milestones starting from this date.' example: et required: false schema: type: string description: 'date optional Filter milestones starting from this date.' example: et - in: query name: date_between_to description: 'date optional Filter milestones ending at this date.' example: quis required: false schema: type: string description: 'date optional Filter milestones ending at this date.' example: quis - in: query name: start_date_from description: 'date optional Filter milestones with a start date after this date.' example: similique required: false schema: type: string description: 'date optional Filter milestones with a start date after this date.' example: similique - in: query name: start_date_to description: 'date optional Filter milestones with a start date before this date.' example: quo required: false schema: type: string description: 'date optional Filter milestones with a start date before this date.' example: quo - in: query name: end_date_from description: 'date optional Filter milestones with an end date after this date.' example: non required: false schema: type: string description: 'date optional Filter milestones with an end date after this date.' example: non - in: query name: end_date_to description: 'date optional Filter milestones with an end date before this date.' example: dolor required: false schema: type: string description: 'date optional Filter milestones with an end date before this date.' example: dolor - in: query name: limit description: 'optional Number of records per page.' example: 11 required: false schema: type: integer description: 'optional Number of records per page.' example: 11 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 12,\n \"title\": \"Design Phase\",\n \"status\": Complete,\n \"progress\": \"75\",\n \"cost\": \"₹1,500.00\",\n \"start_date\": \"2025-03-10\",\n \"end_date\": \"2025-03-20\",\n \"created_by\": \"John Doe\",\n \"description\": \"Initial design phase for the project.\",\n \"created_at\": \"2025-03-01\",\n \"updated_at\": \"2025-03-05\",\n\n }\n ],\n \"total\": 1\n}" 404: description: '' content: application/json: schema: type: object example: error: true message: 'Project not found.' properties: error: type: boolean example: true message: type: string example: 'Project not found.' tags: - 'Milestone Management' parameters: - in: path name: id description: 'The ID of the project whose milestones are to be retrieved.' example: 13 required: true schema: type: integer '/api/milestones/get/{id}': get: summary: 'Get details of a specific milestone.' operationId: getDetailsOfASpecificMilestone description: 'This endpoint retrieves details of a specific milestone by its ID.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false milestone: id: 12 title: 'Design Phase' status: 'In Progress' cost: '₹1,500.00' start_date: '2025-03-10' end_date: '2025-03-20' description: 'Initial design phase for the project.' created_at: '2025-03-01' updated_at: '2025-03-05' properties: error: type: boolean example: false milestone: type: object properties: id: type: integer example: 12 title: type: string example: 'Design Phase' status: type: string example: 'In Progress' cost: type: string example: '₹1,500.00' start_date: type: string example: '2025-03-10' end_date: type: string example: '2025-03-20' description: type: string example: 'Initial design phase for the project.' created_at: type: string example: '2025-03-01' updated_at: type: string example: '2025-03-05' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Milestone not found.' properties: error: type: boolean example: true message: type: string example: 'Milestone not found.' tags: - 'Milestone Management' parameters: - in: path name: id description: 'The ID of the milestone to retrieve.' example: 19 required: true schema: type: integer /api/milestones/update: post: summary: 'Update an existing milestone.' operationId: updateAnExistingMilestone description: 'This endpoint updates a specified milestone. The user must be authenticated and have permission to modify the milestone.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Milestone updated successfully.' id: 12 type: milestone parent_type: project parent_id: 438 properties: error: type: boolean example: false message: type: string example: 'Milestone updated successfully.' id: type: integer example: 12 type: type: string example: milestone parent_type: type: string example: project parent_id: type: integer example: 438 404: description: '' content: application/json: schema: type: object example: error: true message: 'Milestone not found.' properties: error: type: boolean example: true message: type: string example: 'Milestone not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: title: - 'The title field is required.' cost: - 'The cost format is invalid.' progress: - 'The progress field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string cost: type: array example: - 'The cost format is invalid.' items: type: string progress: type: array example: - 'The progress field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Milestone couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Milestone couldn't be updated." tags: - 'Milestone Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The updated title of the milestone.' example: quam status: type: string description: 'The updated status of the milestone.' example: quam start_date: type: date description: 'optional The updated start date of the milestone (YYYY-MM-DD).' example: iure end_date: type: date description: 'optional The updated end date of the milestone (YYYY-MM-DD).' example: nobis cost: type: numeric description: 'The updated cost of the milestone.' example: delectus progress: type: integer description: 'The updated progress percentage of the milestone.' example: 9 description: type: string description: 'optional An updated description of the milestone.' example: 'Ea quasi iusto ex quam.' required: - title - status - cost - progress parameters: - in: path name: id description: 'The ID of the milestone to be updated.' example: 19 required: true schema: type: integer '/api/milestones/destroy/{id}': delete: summary: 'Delete a milestone.' operationId: deleteAMilestone description: 'This endpoint deletes a specified milestone. The user must be authenticated and have permission to delete milestones.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Milestone deleted successfully.' id: 12 title: 'Design Phase' type: milestone parent_type: project parent_id: 438 properties: error: type: boolean example: false message: type: string example: 'Milestone deleted successfully.' id: type: integer example: 12 title: type: string example: 'Design Phase' type: type: string example: milestone parent_type: type: string example: project parent_id: type: integer example: 438 404: description: '' content: application/json: schema: type: object example: error: true message: 'Milestone not found.' properties: error: type: boolean example: true message: type: string example: 'Milestone not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: "Milestone couldn't be deleted." properties: error: type: boolean example: true message: type: string example: "Milestone couldn't be deleted." tags: - 'Milestone Management' parameters: - in: path name: id description: 'The ID of the milestone to delete.' example: 16 required: true schema: type: integer '/api/projects/{id}/comments': post: summary: 'Add a comment.' operationId: addAComment description: "This endpoint allows authenticated users to add comments to a specific model (e.g., tasks, projects).\nUsers can also attach files and mention other users." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"success\": true,\n \"message\": \"Comment Added Successfully\",\n \"comment\": {\n \"id\": 45,\n \"commentable_type\": \"App\\Models\\Project\",\n \"commentable_id\": 438,\n \"content\": \"This is a sample comment with a mention @JohnDoe\",\n \"commenter_id\": 7,\n \"commenter_type\": \"App\\\\Models\\\\User\",\n \"parent_id\": null,\n \"created_at\": \"2 minutes ago\",\n \"attachments\": [\n {\n \"id\": 1,\n \"file_name\": \"document.pdf\",\n \"file_path\": \"comment_attachments/document.pdf\",\n \"file_type\": \"application/pdf\"\n }\n ]\n },\n \"user\": {\n \"id\": 7,\n \"name\": \"John Doe\"\n }\n}" 422: description: '' content: application/json: schema: type: object example: success: false message: 'Validation errors occurred' errors: content: - 'Please enter a comment.' properties: success: type: boolean example: false message: type: string example: 'Validation errors occurred' errors: type: object properties: content: type: array example: - 'Please enter a comment.' items: type: string 500: description: '' content: application/json: schema: type: object example: success: false message: 'Comment could not be added.' properties: success: type: boolean example: false message: type: string example: 'Comment could not be added.' tags: - 'Project Comments' requestBody: required: true content: multipart/form-data: schema: type: object properties: model_type: type: string description: 'The type of model being commented on (e.g., "Task", "Project").' example: officiis model_id: type: integer description: 'The ID of the model being commented on.' example: 4 content: type: string description: 'The comment text.' example: debitis parent_id: type: integer description: 'optional The ID of the parent comment (for replies).' example: 10 'attachments[]': type: string format: binary description: 'optional An array of files to attach to the comment. Maximum file size is defined in the config.' required: - model_type - model_id - content parameters: - in: path name: id description: 'The ID of the project to add a comment to.' example: 6 required: true schema: type: integer '/api/projects/comments/get/{id}': get: summary: 'Get details of a specific comment.' operationId: getDetailsOfASpecificComment description: 'This endpoint retrieves details of a specific comment by its ID, including any attachments.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false comment: id: 45 commentable_type: App\Models\Project commentable_id: 438 content: 'This is a sample comment with a mention @JohnDoe' commenter_id: 7 commenter_type: App\Models\User parent_id: null created_at: '2025-03-03 14:00:00' updated_at: '2025-03-03 16:00:00' attachments: - id: 1 file_name: document.pdf file_path: comment_attachments/document.pdf file_type: application/pdf properties: error: type: boolean example: false comment: type: object properties: id: type: integer example: 45 commentable_type: type: string example: App\Models\Project commentable_id: type: integer example: 438 content: type: string example: 'This is a sample comment with a mention @JohnDoe' commenter_id: type: integer example: 7 commenter_type: type: string example: App\Models\User parent_id: type: string example: null created_at: type: string example: '2025-03-03 14:00:00' updated_at: type: string example: '2025-03-03 16:00:00' attachments: type: array example: - id: 1 file_name: document.pdf file_path: comment_attachments/document.pdf file_type: application/pdf items: type: object properties: id: type: integer example: 1 file_name: type: string example: document.pdf file_path: type: string example: comment_attachments/document.pdf file_type: type: string example: application/pdf 404: description: '' content: application/json: schema: type: object example: error: true message: 'Comment not found.' properties: error: type: boolean example: true message: type: string example: 'Comment not found.' tags: - 'Project Comments' parameters: - in: path name: id description: 'The ID of the comment to retrieve.' example: 3 required: true schema: type: integer /api/projects/comments/update: post: summary: 'Update a comment.' operationId: updateAComment description: 'This endpoint updates a specified comment. The user must be authenticated and have permission to modify the comment.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Comment updated successfully.' id: 45 type: project properties: error: type: boolean example: false message: type: string example: 'Comment updated successfully.' id: type: integer example: 45 type: type: string example: project 404: description: '' content: application/json: schema: type: object example: error: true message: 'Comment not found.' properties: error: type: boolean example: true message: type: string example: 'Comment not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: content: - 'Please enter a comment.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: content: type: array example: - 'Please enter a comment.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Comment couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Comment couldn't be updated." tags: - 'Project Comments' requestBody: required: true content: application/json: schema: type: object properties: comment_id: type: integer description: 'The ID of the comment to be updated.' example: 13 content: type: string description: 'The updated content of the comment.' example: dolorum required: - comment_id - content /api/projects/comments/destroy: delete: summary: 'Delete a comment.' operationId: deleteAComment description: "This endpoint deletes a specified comment and removes its attachments from storage.\nThe user must be authenticated and have permission to delete comments." parameters: - in: query name: comment_id description: 'The ID of the comment to delete.' example: 14 required: true schema: type: integer description: 'The ID of the comment to delete.' example: 14 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Comment deleted successfully.' id: 45 type: project properties: error: type: boolean example: false message: type: string example: 'Comment deleted successfully.' id: type: integer example: 45 type: type: string example: project 404: description: '' content: application/json: schema: type: object example: error: true message: 'Comment not found.' properties: error: type: boolean example: true message: type: string example: 'Comment not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: comment_id: - 'The comment_id field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: comment_id: type: array example: - 'The comment_id field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Comment couldn't be deleted." properties: error: type: boolean example: true message: type: string example: "Comment couldn't be deleted." tags: - 'Project Comments' /api/projects/upload-media: post: summary: 'Upload media files to a project.' operationId: uploadMediaFilesToAProject description: 'This endpoint allows authenticated users to upload media files related to a project.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'File(s) uploaded successfully.' id: - 101 - 102 type: media parent_type: project parent_id: 438 properties: error: type: boolean example: false message: type: string example: 'File(s) uploaded successfully.' id: type: array example: - 101 - 102 items: type: integer type: type: string example: media parent_type: type: string example: project parent_id: type: integer example: 438 404: description: '' content: application/json: schema: type: object example: error: true message: 'Project not found.' properties: error: type: boolean example: true message: type: string example: 'Project not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The selected id is invalid.' media_files: - 'The media file size exceeds the limit.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The selected id is invalid.' items: type: string media_files: type: array example: - 'The media file size exceeds the limit.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred during file upload.' properties: error: type: boolean example: true message: type: string example: 'An error occurred during file upload.' tags: - 'Project Media' requestBody: required: true content: multipart/form-data: schema: type: object properties: id: type: integer description: 'The ID of the project to which media files are being uploaded.' example: 19 'media_files[]': type: string format: binary description: 'An array of media files to be uploaded. Maximum file size is defined in the config.' required: - id - 'media_files[]' '/api/projects/get-media/{id}': get: summary: 'Get project media files.' operationId: getProjectMediaFiles description: 'This endpoint retrieves all media files associated with a specific project, including sorting and search capabilities.' parameters: - in: query name: search description: 'optional A search query to filter media files by name, ID, or upload date.' example: ad required: false schema: type: string description: 'optional A search query to filter media files by name, ID, or upload date.' example: ad - in: query name: sort description: 'optional The column to sort by (default: "id").' example: illo required: false schema: type: string description: 'optional The column to sort by (default: "id").' example: illo - in: query name: order description: 'optional The sorting order: "ASC" or "DESC" (default: "DESC").' example: deserunt required: false schema: type: string description: 'optional The sorting order: "ASC" or "DESC" (default: "DESC").' example: deserunt - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Media files retrieved successfully.\",\n \"rows\": [\n {\n \"id\": 101,\n \"file\": \"image.jpg\",\n \"file_name\": \"image.jpg\",\n \"file_size\": \"2 MB\",\n \"created_at\": \"2025-03-03\",\n \"updated_at\": \"2025-03-03\",\n\n }\n ],\n \"total\": 1\n}" 404: description: '' content: application/json: schema: type: object example: error: true message: 'Project not found.' properties: error: type: boolean example: true message: type: string example: 'Project not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Could not retrieve media files.' properties: error: type: boolean example: true message: type: string example: 'Could not retrieve media files.' tags: - 'Project Media' parameters: - in: path name: id description: 'The ID of the project whose media files are to be retrieved.' example: 4 required: true schema: type: integer '/api/projects/delete-media/{id}': delete: summary: 'Delete a media file.' operationId: deleteAMediaFile description: 'This endpoint deletes a specified media file associated with a project. The user must be authenticated and have permission to delete media files.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'File deleted successfully.' id: 101 title: image.jpg parent_id: 438 type: media parent_type: project properties: error: type: boolean example: false message: type: string example: 'File deleted successfully.' id: type: integer example: 101 title: type: string example: image.jpg parent_id: type: integer example: 438 type: type: string example: media parent_type: type: string example: project 404: description: '' content: application/json: schema: type: object example: error: true message: 'File not found.' properties: error: type: boolean example: true message: type: string example: 'File not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: "File couldn't be deleted." properties: error: type: boolean example: true message: type: string example: "File couldn't be deleted." tags: - 'Project Media' parameters: - in: path name: id description: 'The ID of the delete medium.' example: aut required: true schema: type: string - in: path name: mediaId description: 'The ID of the media file to delete.' example: 20 required: true schema: type: integer /api/tasks/store: post: summary: 'Create a new task.' operationId: createANewTask description: 'This endpoint creates a new task with the provided details. The user must be authenticated to perform this action. The request validates various fields, including title, status, priority, start and due dates, project association, and optional notes.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Task created successfully.' id: 280 parent_id: '420' parent_type: project data: id: 280 workspace_id: 6 title: 'Res Test' status: Default status_id: '0' priority: Default priority_id: '0' users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' user_id: - 1 - 2 clients: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: 07-08-2024 due_date: 07-08-2024 project: id: 420 title: 'Updated Project Title' description: 'Test Desc' note: 'Test Note' created_at: '07-08-2024 13:02:52' updated_at: '07-08-2024 13:02:52' properties: error: type: boolean example: false message: type: string example: 'Task created successfully.' id: type: integer example: 280 parent_id: type: string example: '420' parent_type: type: string example: project data: type: object properties: id: type: integer example: 280 workspace_id: type: integer example: 6 title: type: string example: 'Res Test' status: type: string example: Default status_id: type: string example: '0' priority: type: string example: Default priority_id: type: string example: '0' users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' user_id: type: array example: - 1 - 2 items: type: integer clients: type: array example: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 173 first_name: type: string example: '666' last_name: type: string example: '666' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: type: string example: 07-08-2024 due_date: type: string example: 07-08-2024 project: type: object properties: id: type: integer example: 420 title: type: string example: 'Updated Project Title' description: type: string example: 'Test Desc' note: type: string example: 'Test Note' created_at: type: string example: '07-08-2024 13:02:52' updated_at: type: string example: '07-08-2024 13:02:52' 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"title\": [\"The title field is required.\"],\n \"status_id\": [\"The selected status_id is invalid.\"],\n ...\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the task.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the task.' tags: - 'Task Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the task.' example: 'New Task' status_id: type: integer description: 'The status of the task. Must exist in the `statuses` table.' example: 1 priority_id: type: integer description: 'nullable The priority of the task. Must exist in the `priorities` table.' example: 2 start_date: type: string|null description: 'optional The start date of the task in the format specified in the general settings.' example: '2024-07-20' due_date: type: string|null description: 'optional The due date of the task in the format specified in the general settings.' example: '2024-08-20' description: type: string description: 'nullable A description of the task.' example: 'This is a detailed description of the task.' project: type: integer description: 'The ID of the project associated with the task. Must exist in the `projects` table.' example: 10 note: type: string description: 'nullable Additional notes about the task.' example: Urgent user_id: type: array description: 'nullable An array of user IDs to be assigned to the task.' example: - 1 - 2 - 3 items: type: string clientCanDiscuss: type: string description: "optional Indicates if the client can participate in task discussions. Can only specify if `is_admin_or_has_all_data_access` is true for the logged-in user; otherwise, it will be considered 0 by default. The value should be 'on' to allow client participation." example: 'on' required: - title - status_id - project '/api/tasks/{id}': get: summary: 'List or search tasks.' operationId: listOrSearchTasks description: 'This endpoint retrieves a list of tasks based on various filters. The user must be authenticated to perform this action. The request allows filtering by multiple statuses, users, clients, projects, date ranges, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter tasks by title or id.' example: Task required: false schema: type: string description: 'optional The search term to filter tasks by title or id.' example: Task - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, project, status, priority, start_date, due_date, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, project, status, priority, start_date, due_date, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: status_ids description: 'optional An array of status IDs to filter tasks by.' example: - 2 - 3 required: false schema: type: array description: 'optional An array of status IDs to filter tasks by.' example: - 2 - 3 items: type: string - in: query name: user_ids description: 'optional An array of user IDs to filter tasks by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'optional An array of user IDs to filter tasks by.' example: - 1 - 2 - 3 items: type: string - in: query name: client_ids description: 'optional An array of client IDs to filter tasks by.' example: - 5 - 6 required: false schema: type: array description: 'optional An array of client IDs to filter tasks by.' example: - 5 - 6 items: type: string - in: query name: priority_ids description: 'optional An array of priority IDs to filter tasks by.' example: - 1 - 2 required: false schema: type: array description: 'optional An array of priority IDs to filter tasks by.' example: - 1 - 2 items: type: string - in: query name: project_ids description: 'optional An array of project IDs to filter tasks by.' example: - 1 - 2 required: false schema: type: array description: 'optional An array of project IDs to filter tasks by.' example: - 1 - 2 items: type: string - in: query name: task_start_date_from description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: task_start_date_to description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: task_end_date_from description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: task_end_date_to description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: is_favorites description: 'optional Filter projects marked as favorites.' example: true required: false schema: type: boolean description: 'optional Filter projects marked as favorites.' example: true - in: query name: limit description: 'optional The number of tasks per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of tasks per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Tasks retrieved successfully' total: 1 data: - id: 268 workspace_id: 6 title: sdff status: Default priority: Default users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 102 first_name: Test last_name: Client photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: 23-07-2024 due_date: 24-07-2024 project: id: 379 title: 'From API' description: '

Test Desc

' note: 'Test note' created_at: '23-07-2024 17:50:09' updated_at: '23-07-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Tasks retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 268 workspace_id: 6 title: sdff status: Default priority: Default users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 102 first_name: Test last_name: Client photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: 23-07-2024 due_date: 24-07-2024 project: id: 379 title: 'From API' description: '

Test Desc

' note: 'Test note' created_at: '23-07-2024 17:50:09' updated_at: '23-07-2024 19:08:16' items: type: object properties: id: type: integer example: 268 workspace_id: type: integer example: 6 title: type: string example: sdff status: type: string example: Default priority: type: string example: Default users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 102 first_name: Test last_name: Client photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 102 first_name: type: string example: Test last_name: type: string example: Client photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: type: string example: 23-07-2024 due_date: type: string example: 24-07-2024 project: type: object properties: id: type: integer example: 379 title: type: string example: 'From API' description: type: string example: '

Test Desc

' note: type: string example: 'Test note' created_at: type: string example: '23-07-2024 17:50:09' updated_at: type: string example: '23-07-2024 19:08:16' - description: '' type: object example: error: true message: 'Task not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Task not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Tasks not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Tasks not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Task Management' requestBody: required: false content: application/json: schema: type: object properties: user_ids: type: array description: '' example: - 11 items: type: integer client_ids: type: array description: '' example: - 8 items: type: integer priority_ids: type: array description: '' example: - 1 items: type: integer project_ids: type: array description: '' example: - 13 items: type: integer status_ids: type: array description: '' example: - 1 items: type: integer parameters: - in: path name: id description: 'Optional parameter. optional The ID of the task to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/tasks/update: post: summary: 'Update an existing task.' operationId: updateAnExistingTask description: 'This endpoint updates the details of an existing task. The user must be authenticated to perform this action. The request validates various fields including title, status, priority, start and due dates, and optional notes. It also handles user assignments and notifies relevant parties of any status changes.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Task updated successfully.' id: 280 parent_id: '420' parent_type: project data: id: 280 workspace_id: 6 title: 'Res Test' status: Default priority: Default users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: 07-08-2024 due_date: 07-08-2024 project: id: 420 title: 'Updated Project Title' description: 'Test Desc' note: 'Test Note' created_at: '07-08-2024 13:02:52' updated_at: '07-08-2024 13:02:52' properties: error: type: boolean example: false message: type: string example: 'Task updated successfully.' id: type: integer example: 280 parent_id: type: string example: '420' parent_type: type: string example: project data: type: object properties: id: type: integer example: 280 workspace_id: type: integer example: 6 title: type: string example: 'Res Test' status: type: string example: Default priority: type: string example: Default users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 173 first_name: type: string example: '666' last_name: type: string example: '666' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: type: string example: 07-08-2024 due_date: type: string example: 07-08-2024 project: type: object properties: id: type: integer example: 420 title: type: string example: 'Updated Project Title' description: type: string example: 'Test Desc' note: type: string example: 'Test Note' created_at: type: string example: '07-08-2024 13:02:52' updated_at: type: string example: '07-08-2024 13:02:52' 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\"The selected id is invalid.\"],\n \"title\": [\"The title field is required.\"],\n \"status_id\": [\"The selected status_id is invalid.\"],\n ...\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the task.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the task.' tags: - 'Task Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the task to be updated. Must exist in the `tasks` table.' example: 267 title: type: string description: 'The title of the task.' example: 'Updated Task' status_id: type: integer description: 'The status of the task. Must exist in the `statuses` table.' example: 2 priority_id: type: integer description: 'nullable The priority of the task. Must exist in the `priorities` table.' example: 1 start_date: type: string|null description: 'optional The start date of the task in the format specified in the general settings.' example: '2024-07-20' due_date: type: string|null description: 'optional The due date of the task in the format specified in the general settings.' example: '2024-08-20' description: type: string description: 'nullable A description of the task.' example: 'Updated task description.' note: type: string description: 'nullable Additional notes about the task.' example: 'Needs immediate attention.' user_id: type: array description: 'nullable An array of user IDs to be assigned to the task.' example: - 2 - 3 items: type: string clientCanDiscuss: type: string description: "optional Indicates if the client can participate in task discussions. Can only specify if `is_admin_or_has_all_data_access` is true for the logged-in user; otherwise, it will be considered current value by default. The value should be 'on' to allow client participation." example: 'on' required: - id - title - status_id '/api/tasks/{id}/favorite': patch: summary: 'Update the favorite status of a task.' operationId: updateTheFavoriteStatusOfATask description: 'This endpoint updates whether a task is marked as a favorite or not. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Task favorite status updated successfully\",\n\"data\": {\n \"id\": 438,\n \"title\": \"Task Example\"\n // Other task details will be included in the actual response\n}\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: is_favorite: - 'The is favorite field must be either 0 or 1.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: is_favorite: type: array example: - 'The is favorite field must be either 0 or 1.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the favorite status.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the favorite status.' tags: - 'Task Management' requestBody: required: true content: application/json: schema: type: object properties: is_favorite: type: integer description: 'Indicates whether the task is a favorite. Use 1 for true and 0 for false.' example: 11 required: - is_favorite parameters: - in: path name: id description: 'The ID of the task to update.' example: 4 required: true schema: type: integer '/api/tasks/{id}/pinned': patch: summary: 'Update the pinned status of a task.' operationId: updateThePinnedStatusOfATask description: 'This endpoint updates whether a task is marked as pinned or not. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Task pinned status updated successfully\",\n\"data\": {\n \"id\": 438,\n \"title\": \"Task Example\"\n // Other task details will be included in the actual response\n}\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: is_pinned: - 'The is pinned field must be either 0 or 1.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: is_pinned: type: array example: - 'The is pinned field must be either 0 or 1.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the pinned status.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the pinned status.' tags: - 'Task Management' requestBody: required: true content: application/json: schema: type: object properties: is_pinned: type: integer description: 'Indicates whether the task is pinned. Use 1 for true and 0 for false.' example: 16 required: - is_pinned parameters: - in: path name: id description: 'The ID of the task to update.' example: 15 required: true schema: type: integer '/api/tasks/{id}/status': patch: summary: 'Update the status of a task.' operationId: updateTheStatusOfATask description: 'This endpoint updates the status of a specified task. The user must be authenticated and have permission to set the new status. A notification will be sent to all users and clients associated with the task.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Status updated successfully.' id: '278' type: task activity_message: 'Madhavan Vaidya updated task status from Ongoing to Completed' data: id: 278 workspace_id: 6 title: 'New Task' status: Completed priority: dsfdsf users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: 20-08-2024 due_date: null project: id: 419 title: 'Updated Project Title' description: 'This is a detailed description of the task.' note: null created_at: '06-08-2024 11:42:13' updated_at: '12-08-2024 15:18:09' properties: error: type: boolean example: false message: type: string example: 'Status updated successfully.' id: type: string example: '278' type: type: string example: task activity_message: type: string example: 'Madhavan Vaidya updated task status from Ongoing to Completed' data: type: object properties: id: type: integer example: 278 workspace_id: type: integer example: 6 title: type: string example: 'New Task' status: type: string example: Completed priority: type: string example: dsfdsf users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 173 first_name: type: string example: '666' last_name: type: string example: '666' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: type: string example: 20-08-2024 due_date: type: string example: null project: type: object properties: id: type: integer example: 419 title: type: string example: 'Updated Project Title' description: type: string example: 'This is a detailed description of the task.' note: type: string example: null created_at: type: string example: '06-08-2024 11:42:13' updated_at: type: string example: '12-08-2024 15:18:09' - description: '' type: object example: error: true message: 'You are not authorized to set this status.' properties: error: type: boolean example: true message: type: string example: 'You are not authorized to set this status.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The selected id is invalid.' statusId: - 'The selected status id is invalid.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The selected id is invalid.' items: type: string statusId: type: array example: - 'The selected status id is invalid.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Status couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Status couldn't be updated." tags: - 'Task Management' requestBody: required: true content: application/json: schema: type: object properties: statusId: type: integer description: 'The ID of the new status to set for the task. Must exist in the `statuses` table.' example: 2 note: type: string description: 'optional An optional note to attach to the task update.' example: 'Updated due to client request.' required: - statusId parameters: - in: path name: id description: 'The ID of the task whose status is to be updated.' example: 1 required: true schema: type: integer '/api/tasks/{id}/priority': patch: summary: 'Update the priority of a task.' operationId: updateThePriorityOfATask description: 'This endpoint updates the priority of a specified task. The user must be authenticated and have permission to set the new priority.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Priority updated successfully.' id: '278' type: task activity_message: 'Madhavan Vaidya updated task priority from Medium to High' data: id: 278 workspace_id: 6 title: 'New Task' status: Completed priority: High users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: 20-08-2024 due_date: null project: id: 419 title: 'Updated Project Title' description: 'This is a detailed description of the task.' note: null created_at: '06-08-2024 11:42:13' updated_at: '12-08-2024 15:40:41' properties: error: type: boolean example: false message: type: string example: 'Priority updated successfully.' id: type: string example: '278' type: type: string example: task activity_message: type: string example: 'Madhavan Vaidya updated task priority from Medium to High' data: type: object properties: id: type: integer example: 278 workspace_id: type: integer example: 6 title: type: string example: 'New Task' status: type: string example: Completed priority: type: string example: High users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 173 first_name: type: string example: '666' last_name: type: string example: '666' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' start_date: type: string example: 20-08-2024 due_date: type: string example: null project: type: object properties: id: type: integer example: 419 title: type: string example: 'Updated Project Title' description: type: string example: 'This is a detailed description of the task.' note: type: string example: null created_at: type: string example: '06-08-2024 11:42:13' updated_at: type: string example: '12-08-2024 15:40:41' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The selected id is invalid.' priorityId: - 'The selected priorityId is invalid.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The selected id is invalid.' items: type: string priorityId: type: array example: - 'The selected priorityId is invalid.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Priority couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Priority couldn't be updated." tags: - 'Task Management' requestBody: required: true content: application/json: schema: type: object properties: priorityId: type: integer description: 'The ID of the new priority to set for the task. Must exist in the `priorities` table.' example: 3 required: - priorityId parameters: - in: path name: id description: 'The ID of the task whose priority is to be updated.' example: 1 required: true schema: type: integer '/api/tasks/destroy/{id}': delete: summary: 'Remove the specified task.' operationId: removeTheSpecifiedTask description: 'This endpoint deletes a task based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Task deleted successfully.' id: '262' title: 'From API' parent_id: 377 parent_type: project data: [] properties: error: type: boolean example: false message: type: string example: 'Task deleted successfully.' id: type: string example: '262' title: type: string example: 'From API' parent_id: type: integer example: 377 parent_type: type: string example: project data: type: array example: [] - description: '' type: object example: error: true message: 'Task not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Task not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the task.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the task.' tags: - 'Task Management' parameters: - in: path name: id description: 'The ID of the task to be deleted.' example: 1 required: true schema: type: integer '/api/tasks/{id}/status-timelines': get: summary: 'Get task status timeline.' operationId: getTaskStatusTimeline description: 'This endpoint retrieves the status change history of a task, sorted in descending order.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Status timeline retrieved successfully.' status_timeline: - id: 1 status: 'In Progress' previous_status: Pending new_color: '#ffcc00' old_color: '#cccccc' changed_at: '2025-03-03' - id: 2 status: Completed previous_status: 'In Progress' new_color: '#00cc66' old_color: '#ffcc00' changed_at: '2025-03-05 16:00:00' properties: error: type: boolean example: false message: type: string example: 'Status timeline retrieved successfully.' status_timeline: type: array example: - id: 1 status: 'In Progress' previous_status: Pending new_color: '#ffcc00' old_color: '#cccccc' changed_at: '2025-03-03' - id: 2 status: Completed previous_status: 'In Progress' new_color: '#00cc66' old_color: '#ffcc00' changed_at: '2025-03-05 16:00:00' items: type: object properties: id: type: integer example: 1 status: type: string example: 'In Progress' previous_status: type: string example: Pending new_color: type: string example: '#ffcc00' old_color: type: string example: '#cccccc' changed_at: type: string example: '2025-03-03' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Task not found.' properties: error: type: boolean example: true message: type: string example: 'Task not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Could not retrieve status timeline.' properties: error: type: boolean example: true message: type: string example: 'Could not retrieve status timeline.' tags: - 'Task Management' parameters: - in: path name: id description: 'The ID of the task whose status timeline is to be retrieved.' example: 10 required: true schema: type: integer '/api/tasks/information/{id}/comments': post: summary: 'Add a comment with attachments.' operationId: addACommentWithAttachments description: "This endpoint allows authenticated users to add comments to a specific model (e.g., tasks, projects).\nUsers can also attach files and mention other users." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: success: true message: 'Comment Added Successfully' comment: id: 45 commentable_type: App\Models\Task commentable_id: 438 content: 'This is a sample comment with a mention @JohnDoe' user_id: 7 parent_id: null created_at: '2 minutes ago' attachments: - id: 1 file_name: document.pdf file_path: comment_attachments/document.pdf file_type: application/pdf user: id: 7 name: 'John Doe' properties: success: type: boolean example: true message: type: string example: 'Comment Added Successfully' comment: type: object properties: id: type: integer example: 45 commentable_type: type: string example: App\Models\Task commentable_id: type: integer example: 438 content: type: string example: 'This is a sample comment with a mention @JohnDoe' user_id: type: integer example: 7 parent_id: type: string example: null created_at: type: string example: '2 minutes ago' attachments: type: array example: - id: 1 file_name: document.pdf file_path: comment_attachments/document.pdf file_type: application/pdf items: type: object properties: id: type: integer example: 1 file_name: type: string example: document.pdf file_path: type: string example: comment_attachments/document.pdf file_type: type: string example: application/pdf user: type: object properties: id: type: integer example: 7 name: type: string example: 'John Doe' 422: description: '' content: application/json: schema: type: object example: success: false message: 'Validation errors occurred' errors: content: - 'Please enter a comment.' properties: success: type: boolean example: false message: type: string example: 'Validation errors occurred' errors: type: object properties: content: type: array example: - 'Please enter a comment.' items: type: string 500: description: '' content: application/json: schema: type: object example: success: false message: 'Comment could not be added.' properties: success: type: boolean example: false message: type: string example: 'Comment could not be added.' tags: - 'Task Comments' requestBody: required: true content: multipart/form-data: schema: type: object properties: model_type: type: string description: 'The type of model being commented on (e.g., "Task", "Project").' example: sed model_id: type: integer description: 'The ID of the model being commented on.' example: 11 content: type: string description: 'The comment text.' example: nihil parent_id: type: integer description: 'optional The ID of the parent comment (for replies).' example: 11 'attachments[]': type: string format: binary description: 'optional An array of files to attach to the comment. Supported formats: jpg, jpeg, png, pdf, xlsx, txt, docx (max size: 2MB).' required: - model_type - model_id - content parameters: - in: path name: id description: 'The ID of the information.' example: libero required: true schema: type: string '/api/tasks/comments/get/{id}': get: summary: 'Get details of a specific comment.' operationId: getDetailsOfASpecificComment description: 'This endpoint retrieves the details of a specific comment, including any attachments.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Comment retrieved successfully.' comment: id: 45 commentable_type: App\Models\Task commentable_id: 438 content: 'This is a sample comment with a mention @JohnDoe' user_id: 7 parent_id: null created_at: '2025-03-03 14:00:00' updated_at: '2025-03-03 16:00:00' attachments: - id: 1 file_name: document.pdf file_path: comment_attachments/document.pdf file_type: application/pdf properties: error: type: boolean example: false message: type: string example: 'Comment retrieved successfully.' comment: type: object properties: id: type: integer example: 45 commentable_type: type: string example: App\Models\Task commentable_id: type: integer example: 438 content: type: string example: 'This is a sample comment with a mention @JohnDoe' user_id: type: integer example: 7 parent_id: type: string example: null created_at: type: string example: '2025-03-03 14:00:00' updated_at: type: string example: '2025-03-03 16:00:00' attachments: type: array example: - id: 1 file_name: document.pdf file_path: comment_attachments/document.pdf file_type: application/pdf items: type: object properties: id: type: integer example: 1 file_name: type: string example: document.pdf file_path: type: string example: comment_attachments/document.pdf file_type: type: string example: application/pdf 404: description: '' content: application/json: schema: type: object example: error: true message: 'Comment not found.' properties: error: type: boolean example: true message: type: string example: 'Comment not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Could not retrieve comment.' properties: error: type: boolean example: true message: type: string example: 'Could not retrieve comment.' tags: - 'Task Comments' parameters: - in: path name: id description: 'The ID of the comment to retrieve.' example: 11 required: true schema: type: integer /api/tasks/comments/update: post: summary: 'Update a comment.' operationId: updateAComment description: 'This endpoint updates a specified comment. The user must be authenticated and have permission to modify the comment.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Comment updated successfully.' id: 45 type: task properties: error: type: boolean example: false message: type: string example: 'Comment updated successfully.' id: type: integer example: 45 type: type: string example: task 404: description: '' content: application/json: schema: type: object example: error: true message: 'Comment not found.' properties: error: type: boolean example: true message: type: string example: 'Comment not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: content: - 'Please enter a comment.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: content: type: array example: - 'Please enter a comment.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Comment couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Comment couldn't be updated." tags: - 'Task Comments' requestBody: required: true content: application/json: schema: type: object properties: comment_id: type: integer description: 'The ID of the comment to be updated.' example: 10 content: type: string description: 'The updated content of the comment.' example: provident required: - comment_id - content /api/tasks/comments/destroy: delete: summary: 'Delete a comment.' operationId: deleteAComment description: "This endpoint deletes a specified comment and removes its attachments from storage.\nThe user must be authenticated and have permission to delete comments." parameters: - in: query name: comment_id description: 'The ID of the comment to delete.' example: 11 required: true schema: type: integer description: 'The ID of the comment to delete.' example: 11 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Comment deleted successfully.' id: 45 type: task properties: error: type: boolean example: false message: type: string example: 'Comment deleted successfully.' id: type: integer example: 45 type: type: string example: task 404: description: '' content: application/json: schema: type: object example: error: true message: 'Comment not found.' properties: error: type: boolean example: true message: type: string example: 'Comment not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: comment_id: - 'The comment_id field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: comment_id: type: array example: - 'The comment_id field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Comment couldn't be deleted." properties: error: type: boolean example: true message: type: string example: "Comment couldn't be deleted." tags: - 'Task Comments' /api/tasks/upload-media: post: summary: 'Upload media files for a task.' operationId: uploadMediaFilesForATask description: 'This endpoint allows authenticated users to upload media files and associate them with a specific task.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'File(s) uploaded successfully.' id: - 201 - 202 type: media parent_type: task parent_id: 15 properties: error: type: boolean example: false message: type: string example: 'File(s) uploaded successfully.' id: type: array example: - 201 - 202 items: type: integer type: type: string example: media parent_type: type: string example: task parent_id: type: integer example: 15 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred.' errors: id: - 'The selected id is invalid.' media_files: - 'The media file must be a valid file.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred.' errors: type: object properties: id: type: array example: - 'The selected id is invalid.' items: type: string media_files: type: array example: - 'The media file must be a valid file.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred during file upload: [error details]' properties: error: type: boolean example: true message: type: string example: 'An error occurred during file upload: [error details]' tags: - 'Task Media' requestBody: required: true content: multipart/form-data: schema: type: object properties: id: type: integer description: 'The ID of the task where the media will be uploaded.' example: 13 'media_files[]': type: string format: binary description: 'An array of media files to upload. Max size is defined by system settings.' required: - id - 'media_files[]' '/api/tasks/get-media/{id}': get: summary: 'Get Task media files.' operationId: getTaskMediaFiles description: 'This endpoint retrieves all media files associated with a specific project, including sorting and search capabilities.' parameters: - in: query name: search description: 'optional A search query to filter media files by name, ID, or upload date.' example: voluptas required: false schema: type: string description: 'optional A search query to filter media files by name, ID, or upload date.' example: voluptas - in: query name: sort description: 'optional The column to sort by (default: "id").' example: corporis required: false schema: type: string description: 'optional The column to sort by (default: "id").' example: corporis - in: query name: order description: 'optional The sorting order: "ASC" or "DESC" (default: "DESC").' example: sunt required: false schema: type: string description: 'optional The sorting order: "ASC" or "DESC" (default: "DESC").' example: sunt - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Media files retrieved successfully.\",\n \"rows\": [\n {\n \"id\": 101,\n \"file\": \"image.jpg\",\n \"file_name\": \"image.jpg\",\n \"file_size\": \"2 MB\",\n \"created_at\": \"2025-03-03\",\n \"updated_at\": \"2025-03-03\",\n\n }\n ],\n \"total\": 1\n}" 404: description: '' content: application/json: schema: type: object example: error: true message: 'Task not found.' properties: error: type: boolean example: true message: type: string example: 'Task not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Could not retrieve media files.' properties: error: type: boolean example: true message: type: string example: 'Could not retrieve media files.' tags: - 'Task Media' parameters: - in: path name: id description: 'The ID of the project whose media files are to be retrieved.' example: 10 required: true schema: type: integer '/api/tasks/delete-media/{id}': delete: summary: 'Delete a media file.' operationId: deleteAMediaFile description: 'This endpoint allows authenticated users to delete a specific media file associated with a task.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'File deleted successfully.' id: 301 title: document.pdf parent_id: 15 type: media parent_type: task properties: error: type: boolean example: false message: type: string example: 'File deleted successfully.' id: type: integer example: 301 title: type: string example: document.pdf parent_id: type: integer example: 15 type: type: string example: media parent_type: type: string example: task 404: description: '' content: application/json: schema: type: object example: error: true message: 'File not found.' properties: error: type: boolean example: true message: type: string example: 'File not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the file.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the file.' tags: - 'Task Media' parameters: - in: path name: id description: 'The ID of the delete medium.' example: neque required: true schema: type: string - in: path name: mediaId description: 'The ID of the media file to delete.' example: 4 required: true schema: type: integer /api/reports/income-vs-expense-report-data: get: summary: 'Get the Income vs Expense Statistics.' operationId: getTheIncomeVsExpenseStatistics description: "This endpoint provides the Income vs Expense Statistics.\nThe user must be authenticated to access this data." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: total_income: '$ 705.00' total_expenses: '$ 20,000.00' profit_or_loss: '$ -19,295.00' invoices: - id: 3 view_route: 'http://localhost:8000/estimates-invoices/view/3' amount: '$ 105.00' to_date: 05-02-2025 from_date: 05-02-2025 - id: 4 view_route: 'http://localhost:8000/estimates-invoices/view/4' amount: '$ 600.00' to_date: 05-02-2025 from_date: 05-02-2025 expenses: - id: 1 title: Salary amount: '$ 500.00' expense_date: 31-01-2025 - id: 2 title: 'January Rent Pay' amount: '$ 5,000.00' expense_date: 04-02-2025 - id: 3 title: 'Salary to Karen' amount: '$ 5,000.00' expense_date: 31-01-2025 - id: 4 title: 'Internet Bill Payment' amount: '$ 300.00' expense_date: 31-01-2025 - id: 5 title: 'Office Refreshment Items' amount: '$ 1,000.00' expense_date: 31-01-2025 - id: 9 title: 'Transportation Fuel' amount: '$ 2,000.00' expense_date: 08-02-2025 - id: 10 title: 'Corporate Tax' amount: '$ 1,200.00' expense_date: 08-02-2025 - id: 11 title: 'Event Sponsorships' amount: '$ 5,000.00' expense_date: 08-02-2025 properties: total_income: type: string example: '$ 705.00' total_expenses: type: string example: '$ 20,000.00' profit_or_loss: type: string example: '$ -19,295.00' invoices: type: array example: - id: 3 view_route: 'http://localhost:8000/estimates-invoices/view/3' amount: '$ 105.00' to_date: 05-02-2025 from_date: 05-02-2025 - id: 4 view_route: 'http://localhost:8000/estimates-invoices/view/4' amount: '$ 600.00' to_date: 05-02-2025 from_date: 05-02-2025 items: type: object properties: id: type: integer example: 3 view_route: type: string example: 'http://localhost:8000/estimates-invoices/view/3' amount: type: string example: '$ 105.00' to_date: type: string example: 05-02-2025 from_date: type: string example: 05-02-2025 expenses: type: array example: - id: 1 title: Salary amount: '$ 500.00' expense_date: 31-01-2025 - id: 2 title: 'January Rent Pay' amount: '$ 5,000.00' expense_date: 04-02-2025 - id: 3 title: 'Salary to Karen' amount: '$ 5,000.00' expense_date: 31-01-2025 - id: 4 title: 'Internet Bill Payment' amount: '$ 300.00' expense_date: 31-01-2025 - id: 5 title: 'Office Refreshment Items' amount: '$ 1,000.00' expense_date: 31-01-2025 - id: 9 title: 'Transportation Fuel' amount: '$ 2,000.00' expense_date: 08-02-2025 - id: 10 title: 'Corporate Tax' amount: '$ 1,200.00' expense_date: 08-02-2025 - id: 11 title: 'Event Sponsorships' amount: '$ 5,000.00' expense_date: 08-02-2025 items: type: object properties: id: type: integer example: 1 title: type: string example: Salary amount: type: string example: '$ 500.00' expense_date: type: string example: 31-01-2025 500: description: '' content: application/json: schema: type: object example: error: true message: 'Something went wrong.' properties: error: type: boolean example: true message: type: string example: 'Something went wrong.' tags: - 'Income vs Expense' '/api/statuses/{id}': get: summary: 'List or search statuses.' operationId: listOrSearchStatuses description: 'This endpoint retrieves a list of statuses based on various filters. The user must be authenticated to perform this action. The request allows searching and sorting by different parameters.' parameters: - in: query name: search description: 'optional The search term to filter statuses by title or id.' example: Active required: false schema: type: string description: 'optional The search term to filter statuses by title or id.' example: Active - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, color, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, color, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: limit description: 'optional The number of statuses per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of statuses per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Statuses retrieved successfully' total: 1 data: - id: 1 title: Active color: primary created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Statuses retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 title: Active color: primary created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' items: type: object properties: id: type: integer example: 1 title: type: string example: Active color: type: string example: primary created_at: type: string example: '20-07-2024 17:50:09' updated_at: type: string example: '21-07-2024 19:08:16' - description: '' type: object example: error: true message: 'Status not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Status not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Statuses not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Statuses not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Status Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the status to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/status/store: post: summary: 'Create a new status.' operationId: createANewStatus description: 'This endpoint allows authenticated users to create a new status with a unique slug and assign roles to it.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Status created successfully.' id: 101 status: id: 101 title: 'In Progress' color: primary slug: in-progress properties: error: type: boolean example: false message: type: string example: 'Status created successfully.' id: type: integer example: 101 status: type: object properties: id: type: integer example: 101 title: type: string example: 'In Progress' color: type: string example: primary slug: type: string example: in-progress 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred.' errors: title: - 'The title field is required.' color: - 'The color field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred.' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Status couldn't be created." properties: error: type: boolean example: true message: type: string example: "Status couldn't be created." tags: - 'Status Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the status.' example: neque color: type: string description: 'The color code associated with the status.' example: esse role_ids: type: array description: 'optional An array of role IDs to be associated with the status.' example: - nam items: type: string required: - title - color /api/status/update: post: summary: 'Update an existing status.' operationId: updateAnExistingStatus description: 'This endpoint allows authenticated users to update a status, including modifying the title, color, and associated roles.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Status updated successfully.' id: 101 properties: error: type: boolean example: false message: type: string example: 'Status updated successfully.' id: type: integer example: 101 404: description: '' content: application/json: schema: type: object example: error: true message: 'Status not found.' properties: error: type: boolean example: true message: type: string example: 'Status not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred.' errors: id: - 'The id field is required.' title: - 'The title field is required.' color: - 'The color field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred.' errors: type: object properties: id: type: array example: - 'The id field is required.' items: type: string title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Status couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Status couldn't be updated." tags: - 'Status Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the status to update.' example: 17 title: type: string description: 'The updated title of the status.' example: aut color: type: string description: 'The updated color code associated with the status.' example: reiciendis role_ids: type: array description: 'optional An array of role IDs to associate with the status.' example: - dicta items: type: string required: - id - title - color '/api/status/get/{id}': get: summary: 'Get details of a specific status.' operationId: getDetailsOfASpecificStatus description: 'This endpoint retrieves the details of a specific status, including the roles associated with it.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Status retrieved successfully.' status: id: 101 title: 'In Progress' color: primary slug: in-progress roles: - 1 - 2 - 3 properties: error: type: boolean example: false message: type: string example: 'Status retrieved successfully.' status: type: object properties: id: type: integer example: 101 title: type: string example: 'In Progress' color: type: string example: primary slug: type: string example: in-progress roles: type: array example: - 1 - 2 - 3 items: type: integer 404: description: '' content: application/json: schema: type: object example: error: true message: 'Status not found.' properties: error: type: boolean example: true message: type: string example: 'Status not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Could not retrieve status.' properties: error: type: boolean example: true message: type: string example: 'Could not retrieve status.' tags: - 'Status Management' parameters: - in: path name: id description: 'The ID of the status to retrieve.' example: 12 required: true schema: type: integer '/api/status/destroy/{id}': delete: summary: 'Delete a status.' operationId: deleteAStatus description: "This endpoint allows authenticated users to delete a specific status. Before deletion,\nall associated projects and tasks will be updated to have a default status ID of `0`." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Status deleted successfully.' id: 101 title: 'In Progress' properties: error: type: boolean example: false message: type: string example: 'Status deleted successfully.' id: type: integer example: 101 title: type: string example: 'In Progress' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Status not found.' properties: error: type: boolean example: true message: type: string example: 'Status not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: "Status couldn't be deleted." properties: error: type: boolean example: true message: type: string example: "Status couldn't be deleted." tags: - 'Status Management' parameters: - in: path name: id description: 'The ID of the status to delete.' example: 10 required: true schema: type: integer '/api/priorities/{id}': get: summary: 'List or search priorities.' operationId: listOrSearchPriorities description: 'This endpoint retrieves a list of priorities based on various filters. The user must be authenticated to perform this action. The request allows searching and sorting by different parameters.' parameters: - in: query name: search description: 'optional The search term to filter priorities by title or id.' example: High required: false schema: type: string description: 'optional The search term to filter priorities by title or id.' example: High - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, color, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, color, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: limit description: 'optional The number of priorities per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of priorities per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Priorities retrieved successfully' total: 1 data: - id: 1 title: High color: primary created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Priorities retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 title: High color: primary created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' items: type: object properties: id: type: integer example: 1 title: type: string example: High color: type: string example: primary created_at: type: string example: '20-07-2024 17:50:09' updated_at: type: string example: '21-07-2024 19:08:16' - description: '' type: object example: error: true message: 'Priority not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Priority not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Priorities not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Priorities not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Priority Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the priority to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/priority/store: post: summary: 'Create a new priority.' operationId: createANewPriority description: 'This endpoint allows authenticated users to create a new priority with a unique slug.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Priority created successfully.' id: 101 priority: id: 101 title: High color: primary slug: high properties: error: type: boolean example: false message: type: string example: 'Priority created successfully.' id: type: integer example: 101 priority: type: object properties: id: type: integer example: 101 title: type: string example: High color: type: string example: primary slug: type: string example: high 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred.' errors: title: - 'The title field is required.' color: - 'The color field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred.' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Priority couldn't be created." properties: error: type: boolean example: true message: type: string example: "Priority couldn't be created." tags: - 'Priority Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the priority.' example: aspernatur color: type: string description: 'The color code associated with the priority.' example: debitis required: - title - color /api/priority/update: post: summary: 'Update an existing priority.' operationId: updateAnExistingPriority description: 'This endpoint allows authenticated users to update a priority, including modifying the title and color.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Priority updated successfully.' id: 101 properties: error: type: boolean example: false message: type: string example: 'Priority updated successfully.' id: type: integer example: 101 404: description: '' content: application/json: schema: type: object example: error: true message: 'Priority not found.' properties: error: type: boolean example: true message: type: string example: 'Priority not found.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred.' errors: id: - 'The id field is required.' title: - 'The title field is required.' color: - 'The color field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred.' errors: type: object properties: id: type: array example: - 'The id field is required.' items: type: string title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Priority couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Priority couldn't be updated." tags: - 'Priority Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the priority to update.' example: 16 title: type: string description: 'The updated title of the priority.' example: aspernatur color: type: string description: 'The updated color code associated with the priority.' example: explicabo required: - id - title - color '/api/priority/get/{id}': get: summary: 'Get details of a specific priority.' operationId: getDetailsOfASpecificPriority description: 'This endpoint retrieves the details of a specific priority.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Priority retrieved successfully.' priority: id: 101 title: High color: '#ff0000' slug: high created_at: '2025-03-04 14:00:00' updated_at: '2025-03-04 16:00:00' properties: error: type: boolean example: false message: type: string example: 'Priority retrieved successfully.' priority: type: object properties: id: type: integer example: 101 title: type: string example: High color: type: string example: '#ff0000' slug: type: string example: high created_at: type: string example: '2025-03-04 14:00:00' updated_at: type: string example: '2025-03-04 16:00:00' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Priority not found.' properties: error: type: boolean example: true message: type: string example: 'Priority not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Could not retrieve priority.' properties: error: type: boolean example: true message: type: string example: 'Could not retrieve priority.' tags: - 'Priority Management' parameters: - in: path name: id description: 'The ID of the priority to retrieve.' example: 7 required: true schema: type: integer '/api/priority/destroy/{id}': delete: summary: 'Delete a priority.' operationId: deleteAPriority description: "This endpoint allows authenticated users to delete a specific priority.\nBefore deletion, all associated projects and tasks will have their `priority_id` set to `null`." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Priority deleted successfully.' id: 101 title: High properties: error: type: boolean example: false message: type: string example: 'Priority deleted successfully.' id: type: integer example: 101 title: type: string example: High 404: description: '' content: application/json: schema: type: object example: error: true message: 'Priority not found.' properties: error: type: boolean example: true message: type: string example: 'Priority not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: "Priority couldn't be deleted." properties: error: type: boolean example: true message: type: string example: "Priority couldn't be deleted." tags: - 'Priority Management' parameters: - in: path name: id description: 'The ID of the priority to delete.' example: 11 required: true schema: type: integer '/api/tags/{id}': get: summary: 'List or search tags.' operationId: listOrSearchTags description: 'This endpoint retrieves a list of tags based on various filters. The user must be authenticated to perform this action. The request allows searching and sorting by different parameters.' parameters: - in: query name: search description: 'optional The search term to filter tags by title or id.' example: Urgent required: false schema: type: string description: 'optional The search term to filter tags by title or id.' example: Urgent - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: limit description: 'optional The number of tags per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of tags per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Tags retrieved successfully' total: 1 data: - id: 1 title: Urgent color: primary created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Tags retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 title: Urgent color: primary created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' items: type: object properties: id: type: integer example: 1 title: type: string example: Urgent color: type: string example: primary created_at: type: string example: '20-07-2024 17:50:09' updated_at: type: string example: '21-07-2024 19:08:16' - description: '' type: object example: error: true message: 'Tag not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Tag not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Tags not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Tags not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Tag Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the tag to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/tags/store: post: summary: 'Create a new tag.' operationId: createANewTag description: 'This endpoint creates a new todo item with the specified title, color. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Tag created successfully.' id: 36 data: id: 36 title: test color: secondary created_at: '07-08-2024 16:30:09' updated_at: '07-08-2024 16:30:09' properties: error: type: boolean example: false message: type: string example: 'Tag created successfully.' id: type: integer example: 36 data: type: object properties: id: type: integer example: 36 title: type: string example: test color: type: string example: secondary created_at: type: string example: '07-08-2024 16:30:09' updated_at: type: string example: '07-08-2024 16:30:09' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: title: - 'The title field is required.' color: - 'The color must be one of the following: primary, secondary, warning, info, dark, success, danger.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color must be one of the following: primary, secondary, warning, info, dark, success, danger.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the todo.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the todo.' tags: - 'Tag Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the tag.' example: 'Finish report' color: type: string description: 'The priority of the tag. Must be one of "primary", "secondary", or "warning".' example: secondary required: - title - color /api/tags/update: post: summary: 'Update an existing tag.' operationId: updateAnExistingTag description: 'This endpoint updates an existing tag item with the specified title, color. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Tag updated successfully.\",\n\"id\": \"36\",\n\"data\": {\n \"id\": 36,\n \"title\": \"test\",\n \"color\": \"secondary\",\n \"created_at\": \"07-08-2024 16:30:09\",\n \"updated_at\": \"07-08-2024 16:30:09\"\n}\n}\n\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The id field is required.' title: - 'The title field is required.' color: - 'The color must be one of the following: secondary, primary, info, warning, dark, danger.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The id field is required.' items: type: string title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color must be one of the following: secondary, primary, info, warning, dark, danger.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the tag.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the tag.' tags: - 'Tag Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the todo to be updated.' example: 1 title: type: string description: 'The new title of the todo.' example: 'Finish report' color: type: string description: 'The new priority of the todo. Must be one of "primary", "secondary", "warning", "dark", "info","danger" or "success".' example: secondary required: - id - title - color '/api/tags/destroy/{id}': delete: summary: 'Remove the specified tag.' operationId: removeTheSpecifiedTag description: 'This endpoint deletes a tag item based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Tag deleted successfully.\",\n \"id\": 1,\n \"title\": \"Tag Title\"\n \"data\": []\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the tag.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the tag.' tags: - 'Tag Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer '/api/users/{id}': get: summary: 'List or search users.' operationId: listOrSearchUsers description: 'This endpoint retrieves a list of users based on various filters. The user must be authenticated to perform this action. The request allows filtering by status, search term, role, type, type_id, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter users by id, first name, last name, phone, or email.' example: John required: false schema: type: string description: 'optional The search term to filter users by id, first name, last name, phone, or email.' example: John - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, phone, dob, doj, created_at, and updated_at.' example: id required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, phone, dob, doj, created_at, and updated_at.' example: id - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: status description: 'optional The status ID to filter users by, either 0 or 1.' example: 1 required: false schema: type: integer description: 'optional The status ID to filter users by, either 0 or 1.' example: 1 - in: query name: role_ids description: 'optional The role IDs to filter users by.' example: - 1 - 2 required: false schema: type: array description: 'optional The role IDs to filter users by.' example: - 1 - 2 items: type: string - in: query name: type description: 'optional The type of filter to apply, either "project" or "task".' example: project required: false schema: type: string description: 'optional The type of filter to apply, either "project" or "task".' example: project - in: query name: type_id description: 'optional The ID associated with the type filter.' example: 3 required: false schema: type: integer description: 'optional The ID associated with the type filter.' example: 3 - in: query name: limit description: 'optional The number of users per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of users per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Users retrieved successfully' total: 1 data: - id: 219 first_name: Test last_name: Test role: Member email: test@gmail.com phone: '+91 1111111111' dob: 09-08-2024 doj: 09-08-2024 address: Test city: Test state: Test country: Test zip: 111-111 photo: 'https://test-taskify.infinitietech.com/storage/photos/K0OAOzWyoeD0ZXBzgsaeHZUZERbOTKRljRIYOEYU.png' status: 1 created_at: '09-08-2024 17:04:29' updated_at: '09-08-2024 17:04:29' assigned: projects: 0 tasks: 0 properties: error: type: boolean example: false message: type: string example: 'Users retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 219 first_name: Test last_name: Test role: Member email: test@gmail.com phone: '+91 1111111111' dob: 09-08-2024 doj: 09-08-2024 address: Test city: Test state: Test country: Test zip: 111-111 photo: 'https://test-taskify.infinitietech.com/storage/photos/K0OAOzWyoeD0ZXBzgsaeHZUZERbOTKRljRIYOEYU.png' status: 1 created_at: '09-08-2024 17:04:29' updated_at: '09-08-2024 17:04:29' assigned: projects: 0 tasks: 0 items: type: object properties: id: type: integer example: 219 first_name: type: string example: Test last_name: type: string example: Test role: type: string example: Member email: type: string example: test@gmail.com phone: type: string example: '+91 1111111111' dob: type: string example: 09-08-2024 doj: type: string example: 09-08-2024 address: type: string example: Test city: type: string example: Test state: type: string example: Test country: type: string example: Test zip: type: string example: 111-111 photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/K0OAOzWyoeD0ZXBzgsaeHZUZERbOTKRljRIYOEYU.png' status: type: integer example: 1 created_at: type: string example: '09-08-2024 17:04:29' updated_at: type: string example: '09-08-2024 17:04:29' assigned: type: object properties: projects: type: integer example: 0 tasks: type: integer example: 0 - description: '' type: object example: error: true message: 'User not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'User not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Users not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Users not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Project not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Project not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Task not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Task not found' total: type: integer example: 0 data: type: array example: [] tags: - 'User Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the user to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/users/store: post: summary: 'Create a new user.' operationId: createANewUser description: 'This endpoint creates a new user with the provided details. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'User created successfully.' id: 219 data: id: 219 first_name: Test last_name: Test role: Member email: test@gmail.com phone: '+91 1111111111' dob: 09-08-2024 doj: 09-08-2024 address: Test city: Test state: Test country: Test zip: 111-111 photo: 'https://test-taskify.infinitietech.com/storage/photos/K0OAOzWyoeD0ZXBzgsaeHZUZERbOTKRljRIYOEYU.png' status: 1 created_at: '09-08-2024 17:04:29' updated_at: '09-08-2024 17:04:29' assigned: projects: 0 tasks: 0 properties: error: type: boolean example: false message: type: string example: 'User created successfully.' id: type: integer example: 219 data: type: object properties: id: type: integer example: 219 first_name: type: string example: Test last_name: type: string example: Test role: type: string example: Member email: type: string example: test@gmail.com phone: type: string example: '+91 1111111111' dob: type: string example: 09-08-2024 doj: type: string example: 09-08-2024 address: type: string example: Test city: type: string example: Test state: type: string example: Test country: type: string example: Test zip: type: string example: 111-111 photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/K0OAOzWyoeD0ZXBzgsaeHZUZERbOTKRljRIYOEYU.png' status: type: integer example: 1 created_at: type: string example: '09-08-2024 17:04:29' updated_at: type: string example: '09-08-2024 17:04:29' assigned: type: object properties: projects: type: integer example: 0 tasks: type: integer example: 0 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: first_name: - 'The first name field is required.' last_name: - 'The last name field is required.' email: - 'The email has already been taken.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: first_name: type: array example: - 'The first name field is required.' items: type: string last_name: type: array example: - 'The last name field is required.' items: type: string email: type: array example: - 'The email has already been taken.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'User couldn’t be created, please make sure email settings are operational.' properties: error: type: boolean example: true message: type: string example: 'User couldn’t be created, please make sure email settings are operational.' tags: - 'User Management' requestBody: required: true content: multipart/form-data: schema: type: object properties: first_name: type: string description: 'The first name of the user.' example: John last_name: type: string description: 'The last name of the user.' example: Doe email: type: string description: 'The email address of the user.' example: john.doe@example.com password: type: string description: 'The password for the user.' example: password123 password_confirmation: type: string description: 'The password confirmation.' example: password123 address: type: string description: 'nullable The address of the user.' example: '123 Main St' phone: type: string description: 'nullable The phone number of the user.' example: '1234567890' country_code: type: string description: 'nullable The country code for the phone number.' example: '+91' country_iso_code: type: string description: 'nullable The ISO code for the phone number.' example: in city: type: string description: 'nullable The city of the user.' example: 'New York' state: type: string description: 'nullable The state of the user.' example: NY country: type: string description: 'nullable The country of the user.' example: USA zip: type: string description: 'nullable The ZIP code of the user.' example: '10001' dob: type: string description: 'nullable The date of birth of the user in the format specified in the general settings.' example: '1990-01-01' doj: type: string description: 'nullable The date of joining in the format specified in the general settings.' example: '2024-01-01' role: type: integer description: 'The ID of the role for the user.' example: 1 profile: type: string format: binary description: 'nullable The profile photo of the user.' status: type: boolean description: "0 or 1. If Deactivated (0), the user won't be able to log in to their account.\nCan only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else 0 will be considered by default." example: true require_ev: type: boolean description: "0 or 1. If Yes (1) is selected, the user will receive a verification link via email.\nCan only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else 1 will be considered by default." example: true required: - first_name - last_name - email - password - password_confirmation - role - status - require_ev /api/users/update: post: summary: 'Update an existing user.' operationId: updateAnExistingUser description: 'This endpoint updates the details of an existing user. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'User updated successfully.' id: 219 data: id: 219 first_name: APII last_name: User role: Member email: test@gmail.com phone: '+91 1111111111' dob: 09-08-2024 doj: 09-08-2024 address: 'Test adr' city: 'Test cty' state: 'Test ct' country: 'test ctr' zip: 111-111 photo: 'https://test-taskify.infinitietech.com/storage/photos/28NcF6qzmIRiOhN9zrtEu5x1iN55OBspR9o1ONMO.webp' status: '1' created_at: '09-08-2024 17:04:29' updated_at: '09-08-2024 18:32:10' assigned: projects: 14 tasks: 12 properties: error: type: boolean example: false message: type: string example: 'User updated successfully.' id: type: integer example: 219 data: type: object properties: id: type: integer example: 219 first_name: type: string example: APII last_name: type: string example: User role: type: string example: Member email: type: string example: test@gmail.com phone: type: string example: '+91 1111111111' dob: type: string example: 09-08-2024 doj: type: string example: 09-08-2024 address: type: string example: 'Test adr' city: type: string example: 'Test cty' state: type: string example: 'Test ct' country: type: string example: 'test ctr' zip: type: string example: 111-111 photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/28NcF6qzmIRiOhN9zrtEu5x1iN55OBspR9o1ONMO.webp' status: type: string example: '1' created_at: type: string example: '09-08-2024 17:04:29' updated_at: type: string example: '09-08-2024 18:32:10' assigned: type: object properties: projects: type: integer example: 14 tasks: type: integer example: 12 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: first_name: - 'The first name field is required.' last_name: - 'The last name field is required.' email: - 'The email has already been taken.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: first_name: type: array example: - 'The first name field is required.' items: type: string last_name: type: array example: - 'The last name field is required.' items: type: string email: type: array example: - 'The email has already been taken.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "User couldn't be updated." properties: error: type: boolean example: true message: type: string example: "User couldn't be updated." tags: - 'User Management' requestBody: required: true content: multipart/form-data: schema: type: object properties: id: type: integer description: 'The ID of the user to be updated.' example: 1 first_name: type: string description: 'The first name of the user.' example: John last_name: type: string description: 'The last name of the user.' example: Doe email: type: string description: 'The email address of the user.' example: john.doe@example.com password: type: string description: 'nullable The new password for the user. Can only be updated if `is_admin_or_has_all_data_access` is true for the logged-in user.' example: newpassword123 password_confirmation: type: string description: 'required_with:password The password confirmation.' example: newpassword123 address: type: string description: 'nullable The address of the user.' example: '123 Main St' phone: type: string description: 'nullable The phone number of the user.' example: '1234567890' country_code: type: string description: 'nullable The country code for the phone number.' example: '+91' country_iso_code: type: string description: 'nullable The ISO code for the phone number.' example: in city: type: string description: 'nullable The city of the user.' example: 'New York' state: type: string description: 'nullable The state of the user.' example: NY country: type: string description: 'nullable The country of the user.' example: USA zip: type: string description: 'nullable The ZIP code of the user.' example: '10001' dob: type: string description: 'nullable The date of birth of the user in the format specified in the general settings.' example: '1990-01-01' doj: type: string description: 'nullable The date of joining in the format specified in the general settings.' example: '2024-01-01' role: type: integer description: 'The ID of the role for the user.' example: 1 profile: type: string format: binary description: 'nullable The new profile photo of the user.' status: type: boolean description: "0 or 1. If Deactivated (0), the user won't be able to log in to their account.\nCan only specify status if `is_admin_or_has_all_data_access` is true for the logged-in user, else the current status will be considered by default." example: true required: - id - first_name - last_name - email - role - status '/api/users/destroy/{id}': delete: summary: 'Remove the specified user.' operationId: removeTheSpecifiedUser description: 'This endpoint deletes a user based on the provided ID. The request must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'User deleted successfully.' id: '1' title: 'John Doe' data: [] properties: error: type: boolean example: false message: type: string example: 'User deleted successfully.' id: type: string example: '1' title: type: string example: 'John Doe' data: type: array example: [] - description: '' type: object example: error: true message: 'User not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'User not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An internal server error occurred.' properties: error: type: boolean example: true message: type: string example: 'An internal server error occurred.' tags: - 'User Management' parameters: - in: path name: id description: 'The ID of the user to be deleted.' example: 1 required: true schema: type: integer '/api/clients/{id}': get: summary: 'List or search clients.' operationId: listOrSearchClients description: 'This endpoint retrieves a list of clients based on various filters. The user must be authenticated to perform this action. The request allows filtering by status, search term, type, type_id, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter clients by id, first name, last name, comapny, phone, or email.' example: John required: false schema: type: string description: 'optional The search term to filter clients by id, first name, last name, comapny, phone, or email.' example: John - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, company, phone, created_at, and updated_at.' example: id required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, company, phone, created_at, and updated_at.' example: id - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: status description: 'optional The status ID to filter clients by, either 0 or 1.' example: 1 required: false schema: type: integer description: 'optional The status ID to filter clients by, either 0 or 1.' example: 1 - in: query name: type description: 'optional The type of filter to apply, either "project" or "task".' example: project required: false schema: type: string description: 'optional The type of filter to apply, either "project" or "task".' example: project - in: query name: type_id description: 'optional The ID associated with the type filter.' example: 3 required: false schema: type: integer description: 'optional The ID associated with the type filter.' example: 3 - in: query name: limit description: 'optional The number of clients per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of clients per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Clients retrieved successfully' total: 1 clients: - id: 185 first_name: Client last_name: Test company: 'Test Company' email: client@test.com phone: '1 5555555555' status: 1 internal_purpose: 1 created_at: 10-06-2024 updated_at: 29-07-2024 assigned: projects: 0 tasks: 0 properties: error: type: boolean example: false message: type: string example: 'Clients retrieved successfully' total: type: integer example: 1 clients: type: array example: - id: 185 first_name: Client last_name: Test company: 'Test Company' email: client@test.com phone: '1 5555555555' status: 1 internal_purpose: 1 created_at: 10-06-2024 updated_at: 29-07-2024 assigned: projects: 0 tasks: 0 items: type: object properties: id: type: integer example: 185 first_name: type: string example: Client last_name: type: string example: Test company: type: string example: 'Test Company' email: type: string example: client@test.com phone: type: string example: '1 5555555555' status: type: integer example: 1 internal_purpose: type: integer example: 1 created_at: type: string example: 10-06-2024 updated_at: type: string example: 29-07-2024 assigned: type: object properties: projects: type: integer example: 0 tasks: type: integer example: 0 - description: '' type: object example: error: true message: 'Client not found' total: 0 clients: [] properties: error: type: boolean example: true message: type: string example: 'Client not found' total: type: integer example: 0 clients: type: array example: [] - description: '' type: object example: error: true message: 'Clients not found' total: 0 clients: [] properties: error: type: boolean example: true message: type: string example: 'Clients not found' total: type: integer example: 0 clients: type: array example: [] - description: '' type: object example: error: true message: 'Project not found' total: 0 clients: [] properties: error: type: boolean example: true message: type: string example: 'Project not found' total: type: integer example: 0 clients: type: array example: [] - description: '' type: object example: error: true message: 'Task not found' total: 0 clients: [] properties: error: type: boolean example: true message: type: string example: 'Task not found' total: type: integer example: 0 clients: type: array example: [] tags: - 'Client Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the client to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/clients/store: post: summary: 'Store a new client.' operationId: storeANewClient description: 'This endpoint creates a new client. The client must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Client created successfully.' data: id: 183 first_name: API last_name: Client company: test email: 777@gmail.com phone: '+91 1111111111' address: 'Test adr' city: 'Test cty' state: 'Test ct' country: 'test ctr' zip: 111-111 photo: 'https://test-taskify.infinitietech.com/storage/photos/a5xT73btrbk7sybc0768Bv8xlBn16ROK1Znf1Ddc.webp' status: '1' internal_purpose: 0 created_at: '09-08-2024 19:22:17' updated_at: '09-08-2024 20:10:06' assigned: projects: 0 tasks: 0 properties: error: type: boolean example: false message: type: string example: 'Client created successfully.' data: type: object properties: id: type: integer example: 183 first_name: type: string example: API last_name: type: string example: Client company: type: string example: test email: type: string example: 777@gmail.com phone: type: string example: '+91 1111111111' address: type: string example: 'Test adr' city: type: string example: 'Test cty' state: type: string example: 'Test ct' country: type: string example: 'test ctr' zip: type: string example: 111-111 photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/a5xT73btrbk7sybc0768Bv8xlBn16ROK1Znf1Ddc.webp' status: type: string example: '1' internal_purpose: type: integer example: 0 created_at: type: string example: '09-08-2024 19:22:17' updated_at: type: string example: '09-08-2024 20:10:06' assigned: type: object properties: projects: type: integer example: 0 tasks: type: integer example: 0 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: first_name: - 'The first name field is required.' last_name: - 'The last name field is required.' email: - 'The email has already been taken.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: first_name: type: array example: - 'The first name field is required.' items: type: string last_name: type: array example: - 'The last name field is required.' items: type: string email: type: array example: - 'The email has already been taken.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'Client couldn’t be created, please make sure email settings are operational.' properties: error: type: boolean example: true message: type: string example: 'Client couldn’t be created, please make sure email settings are operational.' tags: - 'Client Management' requestBody: required: true content: multipart/form-data: schema: type: object properties: first_name: type: string description: 'The first name of the client.' example: John last_name: type: string description: 'The last name of the client.' example: Doe company: type: string description: 'nullable The company of the client.' example: 'Example Corp' email: type: string description: 'The email address of the client.' example: john.doe@example.com phone: type: string description: 'nullable The phone number of the client.' example: '1234567890' country_code: type: string description: 'nullable The country code for the phone number.' example: '+91' country_iso_code: type: string description: 'nullable The ISO code for the phone number.' example: in password: type: string description: 'The password for the client. Must be confirmed and at least 6 characters long.' example: password123 password_confirmation: type: string description: 'The password confirmation. Required if password is provided.' example: password123 address: type: string description: 'nullable The address of the client.' example: '123 Main St' city: type: string description: 'nullable The city of the client.' example: 'New York' state: type: string description: 'nullable The state of the client.' example: NY country: type: string description: 'nullable The country of the client.' example: USA zip: type: string description: 'nullable The ZIP code of the client.' example: '10001' dob: type: string description: 'nullable The date of birth of the user in the format specified in the general settings.' example: '1990-01-01' doj: type: string description: 'nullable The date of joining in the format specified in the general settings.' example: '2024-01-01' internal_purpose: type: string description: "nullable Set to 'on' if the client is for internal purposes." example: 'on' profile: type: string format: binary description: 'nullable The profile photo of the client.' status: type: boolean description: "0 or 1. If Deactivated (0), the client won't be able to log in to their account.\nCan only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else 0 will be considered by default." example: true require_ev: type: boolean description: "0 or 1. If Yes (1) is selected, the client will receive a verification link via email.\nCan only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else 1 will be considered by default." example: true required: - first_name - last_name - email - password - password_confirmation - status - require_ev /api/clients/update: post: summary: 'Update an existing client.' operationId: updateAnExistingClient description: 'This endpoint updates the details of an existing client. The client must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Client updated successfully.' data: id: 183 first_name: API last_name: Client company: test email: 777@gmail.com phone: '+91 1111111111' address: 'Test adr' city: 'Test cty' state: 'Test ct' country: 'test ctr' zip: 111-111 photo: 'https://test-taskify.infinitietech.com/storage/photos/a5xT73btrbk7sybc0768Bv8xlBn16ROK1Znf1Ddc.webp' status: '1' internal_purpose: 0 created_at: '09-08-2024 19:22:17' updated_at: '09-08-2024 20:10:06' assigned: projects: 0 tasks: 0 properties: error: type: boolean example: false message: type: string example: 'Client updated successfully.' data: type: object properties: id: type: integer example: 183 first_name: type: string example: API last_name: type: string example: Client company: type: string example: test email: type: string example: 777@gmail.com phone: type: string example: '+91 1111111111' address: type: string example: 'Test adr' city: type: string example: 'Test cty' state: type: string example: 'Test ct' country: type: string example: 'test ctr' zip: type: string example: 111-111 photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/a5xT73btrbk7sybc0768Bv8xlBn16ROK1Znf1Ddc.webp' status: type: string example: '1' internal_purpose: type: integer example: 0 created_at: type: string example: '09-08-2024 19:22:17' updated_at: type: string example: '09-08-2024 20:10:06' assigned: type: object properties: projects: type: integer example: 0 tasks: type: integer example: 0 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: first_name: - 'The first name field is required.' last_name: - 'The last name field is required.' email: - 'The email has already been taken.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: first_name: type: array example: - 'The first name field is required.' items: type: string last_name: type: array example: - 'The last name field is required.' items: type: string email: type: array example: - 'The email has already been taken.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Client couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Client couldn't be updated." tags: - 'Client Management' requestBody: required: true content: multipart/form-data: schema: type: object properties: id: type: integer description: 'The ID of the client to be updated.' example: 1 first_name: type: string description: 'The first name of the client.' example: John last_name: type: string description: 'The last name of the client.' example: Doe company: type: string description: 'nullable The company of the client.' example: XYZ email: type: string description: 'The email address of the client.' example: john.doe@example.com password: type: string description: 'nullable The new password for the client. Can only be updated if `is_admin_or_has_all_data_access` is true for the logged-in user.' example: newpassword123 password_confirmation: type: string description: 'required_with:password The password confirmation.' example: newpassword123 address: type: string description: 'nullable The address of the client.' example: '123 Main St' phone: type: string description: 'nullable The phone number of the client.' example: '1234567890' country_code: type: string description: 'nullable The country code for the phone number.' example: '+91' country_iso_code: type: string description: 'nullable The ISO code for the phone number.' example: in city: type: string description: 'nullable The city of the client.' example: 'New York' state: type: string description: 'nullable The state of the client.' example: NY country: type: string description: 'nullable The country of the client.' example: USA zip: type: string description: 'nullable The ZIP code of the client.' example: '10001' dob: type: string description: 'nullable The date of birth of the user in the format specified in the general settings.' example: '1990-01-01' doj: type: string description: 'nullable The date of joining in the format specified in the general settings.' example: '2024-01-01' internal_purpose: type: string description: "nullable Set to 'on' if the client is for internal purposes." example: 'on' profile: type: string format: binary description: 'nullable The new profile photo of the client.' status: type: boolean description: "0 or 1. If Deactivated (0), the client won't be able to log in to their account.\nCan only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else the current status will be considered by default." example: true require_ev: type: boolean description: "0 or 1. If Yes (1) is selected, the client will receive a verification link via email.\nCan only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else the current require_ev will be considered by default." example: true required: - id - first_name - last_name - email - status - require_ev '/api/clients/destroy/{id}': delete: summary: 'Remove the specified client.' operationId: removeTheSpecifiedClient description: 'This endpoint deletes a client based on the provided ID. The request must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: data: error: false message: 'Client deleted successfully.' id: '1' title: 'Jane Doe' data: [] properties: data: type: object properties: error: type: boolean example: false message: type: string example: 'Client deleted successfully.' id: type: string example: '1' title: type: string example: 'Jane Doe' data: type: array example: [] - description: '' type: object example: data: error: true message: 'Client not found.' data: [] properties: data: type: object properties: error: type: boolean example: true message: type: string example: 'Client not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: data: error: true message: 'An internal server error occurred.' properties: data: type: object properties: error: type: boolean example: true message: type: string example: 'An internal server error occurred.' tags: - 'Client Management' parameters: - in: path name: id description: 'The ID of the client to be deleted.' example: 1 required: true schema: type: integer /api/workspaces/store: post: summary: 'Create a new workspace.' operationId: createANewWorkspace description: 'This endpoint creates a new workspace with the provided details. The user must be authenticated to perform this action. The request validates various fields, including title and participants.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Workspace created successfully.' id: 438 data: id: 438 title: 'Design Team' is_primary: true users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' created_at: '07-08-2024 14:38:51' updated_at: '07-08-2024 14:38:51' properties: error: type: boolean example: false message: type: string example: 'Workspace created successfully.' id: type: integer example: 438 data: type: object properties: id: type: integer example: 438 title: type: string example: 'Design Team' is_primary: type: boolean example: true users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 103 first_name: type: string example: Test last_name: type: string example: Test photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' created_at: type: string example: '07-08-2024 14:38:51' updated_at: type: string example: '07-08-2024 14:38:51' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: title: - 'The title field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the workspace.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the workspace.' tags: - 'Workspace Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the workspace.' example: 'Design Team' user_ids: type: array|null description: 'optional Array of user IDs to be associated with the workspace.' example: '[1, 2, 3]' client_ids: type: array|null description: 'optional Array of client IDs to be associated with the workspace.' example: '[5, 6]' primaryWorkspace: type: string description: "optional Indicates if this workspace should be set as primary. Can only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else it will be considered 0 by default. The value should be 'on' to set as primary." example: 'on' required: - title '/api/workspaces/{id}': get: summary: 'List or search workspaces.' operationId: listOrSearchWorkspaces description: 'This endpoint retrieves a list of workspaces based on various filters. The user must be authenticated to perform this action. The request allows filtering by user, client, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter workspaces by title or id.' example: Workspace required: false schema: type: string description: 'optional The search term to filter workspaces by title or id.' example: Workspace - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: user_id description: 'optional The user ID to filter workspaces by.' example: 1 required: false schema: type: integer description: 'optional The user ID to filter workspaces by.' example: 1 - in: query name: client_id description: 'optional The client ID to filter workspaces by.' example: 5 required: false schema: type: integer description: 'optional The client ID to filter workspaces by.' example: 5 - in: query name: limit description: 'optional The number of workspaces per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of workspaces per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Workspaces retrieved successfully' total: 1 data: - id: 351 title: 'Workspace Title' is_primary: 0 users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 12 first_name: Client last_name: Name photo: 'https://test-taskify.infinitietech.com/storage/photos/client-photo.png' created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Workspaces retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 351 title: 'Workspace Title' is_primary: 0 users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 12 first_name: Client last_name: Name photo: 'https://test-taskify.infinitietech.com/storage/photos/client-photo.png' created_at: '20-07-2024 17:50:09' updated_at: '21-07-2024 19:08:16' items: type: object properties: id: type: integer example: 351 title: type: string example: 'Workspace Title' is_primary: type: integer example: 0 users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 12 first_name: Client last_name: Name photo: 'https://test-taskify.infinitietech.com/storage/photos/client-photo.png' items: type: object properties: id: type: integer example: 12 first_name: type: string example: Client last_name: type: string example: Name photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/client-photo.png' created_at: type: string example: '20-07-2024 17:50:09' updated_at: type: string example: '21-07-2024 19:08:16' - description: '' type: object example: error: true message: 'Workspace not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Workspace not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Workspaces not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Workspaces not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Workspace Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the workspace to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/workspaces/update: post: summary: 'Update an existing workspace.' operationId: updateAnExistingWorkspace description: 'This endpoint updates the details of an existing workspace. The user must be authenticated to perform this action. The request validates various fields, including title and participants.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Workspace updated successfully.' id: 438 data: id: 438 title: 'Design Team' is_primary: true users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' created_at: '07-08-2024 14:38:51' updated_at: '07-08-2024 14:38:51' properties: error: type: boolean example: false message: type: string example: 'Workspace updated successfully.' id: type: integer example: 438 data: type: object properties: id: type: integer example: 438 title: type: string example: 'Design Team' is_primary: type: boolean example: true users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 103 first_name: Test last_name: Test photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 103 first_name: type: string example: Test last_name: type: string example: Test photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' created_at: type: string example: '07-08-2024 14:38:51' updated_at: type: string example: '07-08-2024 14:38:51' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: title: - 'The title field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the workspace.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the workspace.' tags: - 'Workspace Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the workspace to update.' example: 438 title: type: string description: 'The new title of the workspace.' example: 'Design Team' user_ids: type: array|null description: 'optional Array of user IDs to be associated with the workspace.' example: '[1, 2, 3]' client_ids: type: array|null description: 'optional Array of client IDs to be associated with the workspace.' example: '[5, 6]' primaryWorkspace: type: string description: "optional Indicates if this workspace should be set as primary. Can only specify if `is_admin_or_has_all_data_access` is true for the logged-in user, else current value will be considered by default. The value should be 'on' to set as primary." example: 'on' required: - id - title '/api/workspaces/destroy/{id}': delete: summary: 'Remove the specified workspace.' operationId: removeTheSpecifiedWorkspace description: 'This endpoint deletes a workspace based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Workspace deleted successfully.' id: '60' title: 'Workspace Title' data: [] properties: error: type: boolean example: false message: type: string example: 'Workspace deleted successfully.' id: type: string example: '60' title: type: string example: 'Workspace Title' data: type: array example: [] - description: '' type: object example: error: true message: 'Workspace not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Workspace not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the workspace.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the workspace.' tags: - 'Workspace Management' parameters: - in: path name: id description: 'The ID of the workspace to be deleted.' example: 1 required: true schema: type: integer '/api/workspaces/{id}/default': patch: summary: 'Set or remove a default workspace for the authenticated user.' operationId: setOrRemoveADefaultWorkspaceForTheAuthenticatedUser description: 'This endpoint updates whether a workspace is set as the default workspace for the user. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Default status updated successfully\"\n\"data\":[Workspace data here]\n}" 404: description: '' content: application/json: schema: type: object example: error: true message: 'Workspace not found' data: [] properties: error: type: boolean example: true message: type: string example: 'Workspace not found' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'Failed to update default workspace' properties: error: type: boolean example: true message: type: string example: 'Failed to update default workspace' tags: - 'Workspace Management' requestBody: required: true content: application/json: schema: type: object properties: is_default: type: boolean description: 'Indicates whether the workspace should be set as default. Use 1 for setting as default and 0 for removing it as default.' example: true required: - is_default parameters: - in: path name: id description: 'The ID of the workspace to update.' example: 13 required: true schema: type: integer /api/workspaces/remove-participant: delete: summary: 'Remove the authenticated user from the current workspace.' operationId: removeTheAuthenticatedUserFromTheCurrentWorkspace description: 'This endpoint removes the authenticated user from the workspace they are currently in. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Removed from workspace successfully.\",\n \"data\": {\n \"workspace_id\": 1\n }\n}\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while removing the participant from the workspace.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while removing the participant from the workspace.' tags: - 'Workspace Management' /api/meetings/store: post: summary: 'Create a new meeting.' operationId: createANewMeeting description: 'This endpoint creates a new meeting with the provided details. The user must be authenticated to perform this action. The request validates various fields, including title, start and end dates, start and end times, and participant IDs.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Meeting created successfully.' id: 119 data: id: 119 title: 'From API' start_date: 25-07-2024 start_time: '15:00:00' end_date: 25-08-2024 end_time: '11:41:05' users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' status: Ongoing created_at: '07-08-2024 17:11:05' updated_at: '07-08-2024 17:11:05' properties: error: type: boolean example: false message: type: string example: 'Meeting created successfully.' id: type: integer example: 119 data: type: object properties: id: type: integer example: 119 title: type: string example: 'From API' start_date: type: string example: 25-07-2024 start_time: type: string example: '15:00:00' end_date: type: string example: 25-08-2024 end_time: type: string example: '11:41:05' users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 173 first_name: type: string example: '666' last_name: type: string example: '666' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' status: type: string example: Ongoing created_at: type: string example: '07-08-2024 17:11:05' updated_at: type: string example: '07-08-2024 17:11:05' 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"title\": [\"The title field is required.\"],\n \"start_date\": [\"The start date field is required.\"],\n ...\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the meeting.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the meeting.' tags: - 'Meeting Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the meeting.' example: 'Project Kickoff' start_date: type: string description: 'The start date of the meeting in the format specified in the general settings.' example: 25-07-2024 end_date: type: string description: 'The end date of the meeting in the format specified in the general settings.' example: 25-07-2024 start_time: type: string description: 'The start time of the meeting in the format HH:MM.' example: '10:00' end_time: type: string description: 'The end time of the meeting in the format HH:MM.' example: '11:00' user_ids: type: array description: 'nullable An array of user IDs to be assigned to the meeting.' example: - 1 - 2 - 3 items: type: string client_ids: type: array description: 'nullable An array of client IDs to be assigned to the meeting.' example: - 4 - 5 items: type: string required: - title - start_date - end_date - start_time - end_time '/api/meetings/{id}': get: summary: 'List or search meetings.' operationId: listOrSearchMeetings description: 'This endpoint retrieves a list of meetings based on various filters. The user must be authenticated to perform this action. The request allows filtering by status, user, client, date ranges, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter meetings by title or id.' example: Meeting required: false schema: type: string description: 'optional The search term to filter meetings by title or id.' example: Meeting - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, start_date_time, end_date_time, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, start_date_time, end_date_time, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: status description: 'optional The status of the meeting to filter by. Can be "ongoing", "ended", or "yet_to_start".' example: ongoing required: false schema: type: string description: 'optional The status of the meeting to filter by. Can be "ongoing", "ended", or "yet_to_start".' example: ongoing - in: query name: user_id description: 'optional The user ID to filter meetings by.' example: 1 required: false schema: type: integer description: 'optional The user ID to filter meetings by.' example: 1 - in: query name: client_id description: 'optional The client ID to filter meetings by.' example: 5 required: false schema: type: integer description: 'optional The client ID to filter meetings by.' example: 5 - in: query name: start_date_from description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: start_date_to description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: end_date_from description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: end_date_to description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: limit description: 'optional The number of meetings per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of meetings per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Meetings retrieved successfully' total: 1 data: - id: 351 title: 'Project Kickoff' start_date: '2024-07-01' start_time: '10:00:00' end_date: '2024-07-01' end_time: '11:00:00' users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: [] status: Ongoing created_at: '14-06-2024 17:50:09' updated_at: '17-06-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Meetings retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 351 title: 'Project Kickoff' start_date: '2024-07-01' start_time: '10:00:00' end_date: '2024-07-01' end_time: '11:00:00' users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: [] status: Ongoing created_at: '14-06-2024 17:50:09' updated_at: '17-06-2024 19:08:16' items: type: object properties: id: type: integer example: 351 title: type: string example: 'Project Kickoff' start_date: type: string example: '2024-07-01' start_time: type: string example: '10:00:00' end_date: type: string example: '2024-07-01' end_time: type: string example: '11:00:00' users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: [] status: type: string example: Ongoing created_at: type: string example: '14-06-2024 17:50:09' updated_at: type: string example: '17-06-2024 19:08:16' - description: '' type: object example: error: true message: 'Meeting not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Meeting not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Meetings not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Meetings not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Meeting Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the meeting to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/meetings/update: post: summary: 'Update an existing meeting.' operationId: updateAnExistingMeeting description: 'This endpoint updates an existing meeting with the provided details. The user must be authenticated to perform this action. The request validates various fields, including title, dates, and times.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Meeting updated successfully.' id: 119 data: id: 119 title: 'From API' start_date: 25-07-2024 start_time: '15:00:00' end_date: 25-08-2024 end_time: '11:45:15' users: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' status: Ongoing created_at: '07-08-2024 17:11:05' updated_at: '07-08-2024 17:15:15' properties: error: type: boolean example: false message: type: string example: 'Meeting updated successfully.' id: type: integer example: 119 data: type: object properties: id: type: integer example: 119 title: type: string example: 'From API' start_date: type: string example: 25-07-2024 start_time: type: string example: '15:00:00' end_date: type: string example: 25-08-2024 end_time: type: string example: '11:45:15' users: type: array example: - id: 7 first_name: Madhavan last_name: Vaidya photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' items: type: object properties: id: type: integer example: 7 first_name: type: string example: Madhavan last_name: type: string example: Vaidya photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' clients: type: array example: - id: 173 first_name: '666' last_name: '666' photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 173 first_name: type: string example: '666' last_name: type: string example: '666' photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' status: type: string example: Ongoing created_at: type: string example: '07-08-2024 17:11:05' updated_at: type: string example: '07-08-2024 17:15:15' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The meeting ID is required.' - 'The meeting ID does not exist in our records.' start_date: - 'The start date must be before or equal to the end date.' start_time: - 'The start time field is required.' end_time: - 'The end time field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The meeting ID is required.' - 'The meeting ID does not exist in our records.' items: type: string start_date: type: array example: - 'The start date must be before or equal to the end date.' items: type: string start_time: type: array example: - 'The start time field is required.' items: type: string end_time: type: array example: - 'The end time field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the meeting.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the meeting.' tags: - 'Meeting Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the meeting to update.' example: 1 title: type: string description: 'The title of the meeting.' example: 'Updated Meeting Title' start_date: type: string description: 'The start date of the meeting in the format specified in the general settings.' example: '2024-08-01' end_date: type: string description: 'The end date of the meeting in the format specified in the general settings.' example: '2024-08-31' start_time: type: string description: 'The start time of the meeting.' example: '09:00' end_time: type: string description: 'The end time of the meeting.' example: '10:00' user_ids: type: array|null description: 'optional Array of user IDs to be associated with the meeting.' example: '[2, 3]' client_ids: type: array|null description: 'optional Array of client IDs to be associated with the meeting.' example: '[5, 6]' required: - id - title - start_date - end_date - start_time - end_time '/api/meetings/destroy/{id}': delete: summary: 'Remove the specified meeting.' operationId: removeTheSpecifiedMeeting description: 'This endpoint deletes a meeting based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Meeting deleted successfully.' id: 1 title: 'Meeting Title' data: [] properties: error: type: boolean example: false message: type: string example: 'Meeting deleted successfully.' id: type: integer example: 1 title: type: string example: 'Meeting Title' data: type: array example: [] - description: '' type: object example: error: true message: 'Meeting not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Meeting not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the meeting.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the meeting.' tags: - 'Meeting Management' parameters: - in: path name: id description: 'The ID of the meeting to be deleted.' example: 1 required: true schema: type: integer /api/todos/store: post: summary: 'Create a new todo.' operationId: createANewTodo description: 'This endpoint creates a new todo item with the specified title, priority, and description. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Todo created successfully.' id: 36 data: id: 36 title: test description: test priority: low is_completed: 0 created_at: '07-08-2024 16:30:09' updated_at: '07-08-2024 16:30:09' properties: error: type: boolean example: false message: type: string example: 'Todo created successfully.' id: type: integer example: 36 data: type: object properties: id: type: integer example: 36 title: type: string example: test description: type: string example: test priority: type: string example: low is_completed: type: integer example: 0 created_at: type: string example: '07-08-2024 16:30:09' updated_at: type: string example: '07-08-2024 16:30:09' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: title: - 'The title field is required.' priority: - 'The priority must be one of the following: low, medium, high.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string priority: type: array example: - 'The priority must be one of the following: low, medium, high.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the todo.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the todo.' tags: - 'Todo Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the todo.' example: 'Finish report' priority: type: string description: 'The priority of the todo. Must be one of "low", "medium", or "high".' example: medium description: type: string description: 'optional A description of the todo.' example: 'Complete the report by end of day' required: - title - priority '/api/todos/{id}': get: summary: 'List or search todos.' operationId: listOrSearchTodos description: 'This endpoint retrieves a list of todos based on various filters. The user must be authenticated to perform this action. The request allows filtering by search term, status, and pagination parameters.' parameters: - in: query name: search description: 'optional The search term to filter todos by id, title, or description.' example: Test required: false schema: type: string description: 'optional The search term to filter todos by id, title, or description.' example: Test - in: query name: sort description: 'optional The field to sort by. Defaults to "is_completed". All fields are sortable.' example: created_at required: false schema: type: string description: 'optional The field to sort by. Defaults to "is_completed". All fields are sortable.' example: created_at - in: query name: order description: 'optional The sort order, either "asc" or "desc". Defaults to "desc".' example: asc required: false schema: type: string description: 'optional The sort order, either "asc" or "desc". Defaults to "desc".' example: asc - in: query name: status description: 'optional The status to filter todos by.' example: completed required: false schema: type: string description: 'optional The status to filter todos by.' example: completed - in: query name: limit description: 'optional The number of todos per page for pagination. Defaults to 10.' example: 10 required: false schema: type: integer description: 'optional The number of todos per page for pagination. Defaults to 10.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results. Defaults to 0.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results. Defaults to 0.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Todos retrieved successfully.' total: 1 data: - id: 35 title: test description: test priority: low is_completed: 0 created_at: '07-08-2024 15:28:22' updated_at: '07-08-2024 15:28:22' properties: error: type: boolean example: false message: type: string example: 'Todos retrieved successfully.' total: type: integer example: 1 data: type: array example: - id: 35 title: test description: test priority: low is_completed: 0 created_at: '07-08-2024 15:28:22' updated_at: '07-08-2024 15:28:22' items: type: object properties: id: type: integer example: 35 title: type: string example: test description: type: string example: test priority: type: string example: low is_completed: type: integer example: 0 created_at: type: string example: '07-08-2024 15:28:22' updated_at: type: string example: '07-08-2024 15:28:22' - description: '' type: object example: error: true message: 'Todo not found.' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Todo not found.' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Todos not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Todos not found' total: type: integer example: 0 data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while retrieving the todos.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while retrieving the todos.' tags: - 'Todo Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the todo to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/todos/update: post: summary: 'Update an existing todo.' operationId: updateAnExistingTodo description: 'This endpoint updates an existing todo item with the specified title, priority, and description. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Todo updated successfully.\",\n\"id\": \"36\",\n\"data\": {\n \"id\": 36,\n \"is_completed\": 0,\n \"title\": \"test\",\n \"priority\": \"low\",\n \"description\": \"test\",\n \"created_at\": \"07-08-2024 16:30:09\",\n \"updated_at\": \"07-08-2024 16:30:09\"\n}\n}\n\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The id field is required.' title: - 'The title field is required.' priority: - 'The priority must be one of the following: low, medium, high.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The id field is required.' items: type: string title: type: array example: - 'The title field is required.' items: type: string priority: type: array example: - 'The priority must be one of the following: low, medium, high.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the todo.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the todo.' tags: - 'Todo Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the todo to be updated.' example: 1 title: type: string description: 'The new title of the todo.' example: 'Finish report' priority: type: string description: 'The new priority of the todo. Must be one of "low", "medium", or "high".' example: medium description: type: string description: 'optional A new description for the todo.' example: 'Complete the report by end of day' required: - id - title - priority '/api/todos/{id}/status': patch: summary: 'Update the completion status of a todo.' operationId: updateTheCompletionStatusOfATodo description: 'This endpoint updates the completion status of a specified todo item. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Status updated successfully.' id: '60' activity_message: 'Madhavan Vaidya marked todo iouyhgyu as Completed' data: id: 60 title: iouyhgyu description: ty8uifyu priority: medium is_completed: 1 created_at: '10-08-2024 10:28:59' updated_at: '12-08-2024 18:08:14' properties: error: type: boolean example: false message: type: string example: 'Status updated successfully.' id: type: string example: '60' activity_message: type: string example: 'Madhavan Vaidya marked todo iouyhgyu as Completed' data: type: object properties: id: type: integer example: 60 title: type: string example: iouyhgyu description: type: string example: ty8uifyu priority: type: string example: medium is_completed: type: integer example: 1 created_at: type: string example: '10-08-2024 10:28:59' updated_at: type: string example: '12-08-2024 18:08:14' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The id field is required.' status: - 'The status field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The id field is required.' items: type: string status: type: array example: - 'The status field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Status couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Status couldn't be updated." tags: - 'Todo Management' requestBody: required: true content: application/json: schema: type: object properties: status: type: boolean description: 'The new completion status of the todo.' example: true required: - status parameters: - in: path name: id description: 'The ID of the todo whose status is to be updated.' example: 1 required: true schema: type: integer '/api/todos/{id}/priority': patch: summary: 'Update the priority of a todo.' operationId: updateThePriorityOfATodo description: "This endpoint updates the priority of a specified todo item. The user must be authenticated to perform this action. The priority must be one of 'low', 'medium', or 'high'." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Priority updated successfully.' id: '60' activity_message: 'Madhavan Vaidya updated the priority of todo iouyhgyu from High to Low' data: id: 60 title: iouyhgyu description: ty8uifyu priority: low is_completed: 1 created_at: '10-08-2024 10:28:59' updated_at: '12-08-2024 18:11:13' properties: error: type: boolean example: false message: type: string example: 'Priority updated successfully.' id: type: string example: '60' activity_message: type: string example: 'Madhavan Vaidya updated the priority of todo iouyhgyu from High to Low' data: type: object properties: id: type: integer example: 60 title: type: string example: iouyhgyu description: type: string example: ty8uifyu priority: type: string example: low is_completed: type: integer example: 1 created_at: type: string example: '10-08-2024 10:28:59' updated_at: type: string example: '12-08-2024 18:11:13' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The id field is required.' priority: - 'The priority field is required.' - 'The selected priority is invalid.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The id field is required.' items: type: string priority: type: array example: - 'The priority field is required.' - 'The selected priority is invalid.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: "Priority couldn't be updated." properties: error: type: boolean example: true message: type: string example: "Priority couldn't be updated." tags: - 'Todo Management' requestBody: required: true content: application/json: schema: type: object properties: priority: type: string description: "The new priority of the todo. Must be one of 'low', 'medium', or 'high'." example: medium required: - priority parameters: - in: path name: id description: 'The ID of the todo whose priority is to be updated.' example: 1 required: true schema: type: integer '/api/todos/destroy/{id}': delete: summary: 'Remove the specified todo.' operationId: removeTheSpecifiedTodo description: 'This endpoint deletes a todo item based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Todo deleted successfully.\",\n \"id\": 1,\n \"title\": \"Todo Title\"\n \"data\": []\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the todo.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the todo.' tags: - 'Todo Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer /api/notes/store: post: summary: 'Create a new note.' operationId: createANewNote description: 'This endpoint creates a new note item with the specified title, color, and description. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Note created successfully.\",\n\"id\": 44,\n\"data\": {\n \"id\": 44,\n \"title\": \"Test Note\",\n \"color\": \"info\",\n \"note_type\" : \"text|drawing\",\n \"drawing_data\":\"urlencoded(base64encoded(Svg)),\n \"description\": \"test\",\n \"workspace_id\": 6,\n \"creator_id\": \"u_7\",\n \"created_at\": \"07-08-2024 16:24:57\",\n \"updated_at\": \"07-08-2024 16:24:57\"\n}\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: title: - 'The title field is required.' color: - 'The color must be one of the following: info, warning, danger.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color must be one of the following: info, warning, danger.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the note.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the note.' tags: - 'Note Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the note.' example: 'Meeting notes' color: type: string description: 'The color associated with the note. Must be one of "info", "warning", or "danger".' example: warning description: type: string description: 'optional A description of the note.' example: 'Notes from the client meeting' required: - title - color '/api/notes/{id}': get: summary: 'List or search notes.' operationId: listOrSearchNotes description: 'This endpoint retrieves a list of notes based on various filters. The user must be authenticated to perform this action. The request allows filtering by search term and pagination parameters.' parameters: - in: query name: search description: 'optional The search term to filter notes by id, title, or description.' example: Test required: false schema: type: string description: 'optional The search term to filter notes by id, title, or description.' example: Test - in: query name: sort description: 'optional The field to sort by. Defaults to "is_completed". All fields are sortable.' example: created_at required: false schema: type: string description: 'optional The field to sort by. Defaults to "is_completed". All fields are sortable.' example: created_at - in: query name: order description: 'optional The sort order, either "asc" or "desc". Defaults to "desc".' example: asc required: false schema: type: string description: 'optional The sort order, either "asc" or "desc". Defaults to "desc".' example: asc - in: query name: limit description: 'optional The number of notes per page for pagination. Defaults to 10.' example: 10 required: false schema: type: integer description: 'optional The number of notes per page for pagination. Defaults to 10.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results. Defaults to 0.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results. Defaults to 0.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Notes retrieved successfully.' total: 1 data: - id: 43 title: upper color: warning description: jhdcsd workspace_id: 6 creator_id: u_7 created_at: '07-08-2024 16:12:13' updated_at: '07-08-2024 16:12:13' properties: error: type: boolean example: false message: type: string example: 'Notes retrieved successfully.' total: type: integer example: 1 data: type: array example: - id: 43 title: upper color: warning description: jhdcsd workspace_id: 6 creator_id: u_7 created_at: '07-08-2024 16:12:13' updated_at: '07-08-2024 16:12:13' items: type: object properties: id: type: integer example: 43 title: type: string example: upper color: type: string example: warning description: type: string example: jhdcsd workspace_id: type: integer example: 6 creator_id: type: string example: u_7 created_at: type: string example: '07-08-2024 16:12:13' updated_at: type: string example: '07-08-2024 16:12:13' - description: '' type: object example: error: true message: 'Note not found.' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Note not found.' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Notes not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Notes not found' total: type: integer example: 0 data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while retrieving the notes.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while retrieving the notes.' tags: - 'Note Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the note to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/notes/update: post: summary: 'Update an existing note.' operationId: updateAnExistingNote description: 'This endpoint updates an existing note item with the specified title, color, and description. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Note updated successfully.' id: 44 data: id: 44 title: 'Test Note' color: info description: test workspace_id: 6 creator_id: u_7 created_at: '07-08-2024 16:24:57' updated_at: '07-08-2024 16:24:57' properties: error: type: boolean example: false message: type: string example: 'Note updated successfully.' id: type: integer example: 44 data: type: object properties: id: type: integer example: 44 title: type: string example: 'Test Note' color: type: string example: info description: type: string example: test workspace_id: type: integer example: 6 creator_id: type: string example: u_7 created_at: type: string example: '07-08-2024 16:24:57' updated_at: type: string example: '07-08-2024 16:24:57' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The id field is required.' title: - 'The title field is required.' color: - 'The color must be one of the following: info, warning, danger.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The id field is required.' items: type: string title: type: array example: - 'The title field is required.' items: type: string color: type: array example: - 'The color must be one of the following: info, warning, danger.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the note.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the note.' tags: - 'Note Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the note to be updated.' example: 1 title: type: string description: 'The new title of the note.' example: 'Meeting notes' color: type: string description: 'The new color of the note. Must be one of "info", "warning", or "danger".' example: warning description: type: string description: 'optional A new description for the note.' example: 'Notes from the client meeting' required: - id - title - color '/api/notes/destroy/{id}': delete: summary: 'Remove the specified note.' operationId: removeTheSpecifiedNote description: 'This endpoint deletes a note item based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Note deleted successfully.' id: 1 title: 'Note Title' data: [] properties: error: type: boolean example: false message: type: string example: 'Note deleted successfully.' id: type: integer example: 1 title: type: string example: 'Note Title' data: type: array example: [] - description: '' type: object example: error: true message: 'Note not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Note not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the note.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the note.' tags: - 'Note Management' parameters: - in: path name: id description: 'The ID of the note to be deleted.' example: 1 required: true schema: type: integer /api/leave-requests/store: post: summary: 'Create a new leave request.' operationId: createANewLeaveRequest description: 'This endpoint creates a new leave request with the provided details. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Leave request created successfully.' id: 187 type: leave_request data: id: 187 user_name: 'Madhavan Vaidya' user_photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' action_by: null action_by_id: null from_date: 'Wed, 07-08-2024' to_date: 'Wed, 07-08-2024' type: Full duration: '1 day' reason: Test status: Pending visible_to: null created_at: '07-08-2024 18:31:28' updated_at: '07-08-2024 18:31:28' properties: error: type: boolean example: false message: type: string example: 'Leave request created successfully.' id: type: integer example: 187 type: type: string example: leave_request data: type: object properties: id: type: integer example: 187 user_name: type: string example: 'Madhavan Vaidya' user_photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' action_by: type: string example: null action_by_id: type: string example: null from_date: type: string example: 'Wed, 07-08-2024' to_date: type: string example: 'Wed, 07-08-2024' type: type: string example: Full duration: type: string example: '1 day' reason: type: string example: Test status: type: string example: Pending visible_to: type: string example: null created_at: type: string example: '07-08-2024 18:31:28' updated_at: type: string example: '07-08-2024 18:31:28' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: reason: - 'The reason field is required.' from_date: - 'The from date field is required.' to_date: - 'The to date field is required.' from_time: - 'The from time field is required when partial leave is checked.' to_time: - 'The to time field is required when partial leave is checked.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: reason: type: array example: - 'The reason field is required.' items: type: string from_date: type: array example: - 'The from date field is required.' items: type: string to_date: type: array example: - 'The to date field is required.' items: type: string from_time: type: array example: - 'The from time field is required when partial leave is checked.' items: type: string to_time: type: array example: - 'The to time field is required when partial leave is checked.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the leave request.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the leave request.' tags: - 'Leave Request Management' requestBody: required: true content: application/json: schema: type: object properties: reason: type: string description: 'The reason for the leave.' example: 'Family function' from_date: type: date description: 'The start date of the leave in the format specified in the general settings.' example: '2024-08-05' to_date: type: date description: 'The end date of the leave in the format specified in the general settings.' example: '2024-08-01' from_time: type: time description: 'required_if:partialLeave,on The start time of the leave in HH:MM format.' example: '09:00' to_time: type: time description: 'required_if:partialLeave,on The end time of the leave in HH:MM format.' example: '17:00' status: type: string description: "nullable The status of the leave request. Can be 'pending', 'approved', or 'rejected'." example: pending leaveVisibleToAll: type: string description: "optional Set to 'on' if the leave should be visible to all users in the workspace." example: 'on' visible_to_ids: type: array description: 'The IDs of users who can see the leave if it is not visible to all.' example: - 1 - 2 - 3 items: type: string user_id: type: integer description: 'The ID of the user requesting the leave. Only admins or leave editors can specify this.' example: 4 partialLeave: type: string description: "optional Set to 'on' if the leave is partial (specific times within a day)." example: 'on' comment: type: string description: 'optional An optional comment that can only be set by admin or leave editor.' example: 'Approved due to exceptional circumstances' required: - reason - from_date - to_date '/api/leave-requests/{id}': get: summary: 'List or search leave requests.' operationId: listOrSearchLeaveRequests description: 'This endpoint retrieves a list of leave requests based on various filters. The user must be authenticated to perform this action. The request allows filtering by status, user, action_by, date ranges, type, and search term.' parameters: - in: query name: search description: 'optional The search term to filter leave requests by reason or id.' example: Vacation required: false schema: type: string description: 'optional The search term to filter leave requests by reason or id.' example: Vacation - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, from_date, to_date, type, reason, status, action_by_id, created_at, and updated_at.' example: id required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, from_date, to_date, type, reason, status, action_by_id, created_at, and updated_at.' example: id - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: status description: 'optional The status of the leave request to filter by. Can be "pending", "approved", "rejected", etc.' example: pending required: false schema: type: string description: 'optional The status of the leave request to filter by. Can be "pending", "approved", "rejected", etc.' example: pending - in: query name: user_id description: 'optional The user ID to filter leave requests by.' example: 1 required: false schema: type: integer description: 'optional The user ID to filter leave requests by.' example: 1 - in: query name: action_by_id description: 'optional The ID of the user who acted on the request to filter by.' example: 2 required: false schema: type: integer description: 'optional The ID of the user who acted on the request to filter by.' example: 2 - in: query name: start_date_from description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: start_date_to description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The start date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: end_date_from description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The end date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: end_date_to description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: type description: 'optional The type of leave request. Can be "full" or "partial".' example: full required: false schema: type: string description: 'optional The type of leave request. Can be "full" or "partial".' example: full - in: query name: limit description: 'optional The number of leave requests per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of leave requests per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Leave requests retrieved successfully' total: 25 data: - id: 175 user_name: 'Admin Test' user_photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' action_by: null from_date: 'Mon, 29-07-2024' to_date: 'Mon, 29-07-2024' type: Full duration: '1 day' reason: dsdsdsd status: Pending visible_to: - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' created_at: '29-07-2024 10:02:45' updated_at: '29-07-2024 10:02:45' properties: error: type: boolean example: false message: type: string example: 'Leave requests retrieved successfully' total: type: integer example: 25 data: type: array example: - id: 175 user_name: 'Admin Test' user_photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' action_by: null from_date: 'Mon, 29-07-2024' to_date: 'Mon, 29-07-2024' type: Full duration: '1 day' reason: dsdsdsd status: Pending visible_to: - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' created_at: '29-07-2024 10:02:45' updated_at: '29-07-2024 10:02:45' items: type: object properties: id: type: integer example: 175 user_name: type: string example: 'Admin Test' user_photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' action_by: type: string example: null from_date: type: string example: 'Mon, 29-07-2024' to_date: type: string example: 'Mon, 29-07-2024' type: type: string example: Full duration: type: string example: '1 day' reason: type: string example: dsdsdsd status: type: string example: Pending visible_to: type: array example: - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 183 first_name: type: string example: Girish last_name: type: string example: Thacker photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' created_at: type: string example: '29-07-2024 10:02:45' updated_at: type: string example: '29-07-2024 10:02:45' - description: '' type: object example: error: true message: 'Leave request not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Leave request not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Leave requests not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Leave requests not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Leave Request Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the leave request to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/leave-requests/update: post: summary: 'Update an existing leave request.' operationId: updateAnExistingLeaveRequest description: 'This endpoint updates an existing leave request with the provided details. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Leave request updated successfully.' id: 187 type: leave_request data: id: 187 user_name: 'Madhavan Vaidya' user_photo: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' action_by: null action_by_id: null from_date: 'Wed, 07-08-2024' to_date: 'Wed, 07-08-2024' type: Full duration: '1 day' reason: Test status: Pending visible_to: null created_at: '07-08-2024 18:31:28' updated_at: '07-08-2024 18:31:28' properties: error: type: boolean example: false message: type: string example: 'Leave request updated successfully.' id: type: integer example: 187 type: type: string example: leave_request data: type: object properties: id: type: integer example: 187 user_name: type: string example: 'Madhavan Vaidya' user_photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/yxNYBlFLALdLomrL0JzUY2USPLILL9Ocr16j4n2o.png' action_by: type: string example: null action_by_id: type: string example: null from_date: type: string example: 'Wed, 07-08-2024' to_date: type: string example: 'Wed, 07-08-2024' type: type: string example: Full duration: type: string example: '1 day' reason: type: string example: Test status: type: string example: Pending visible_to: type: string example: null created_at: type: string example: '07-08-2024 18:31:28' updated_at: type: string example: '07-08-2024 18:31:28' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: id: - 'The id field is required.' - 'The selected id is invalid.' reason: - 'The reason field is required.' from_date: - 'The from date field is required.' to_date: - 'The to date field is required.' from_time: - 'The from time field is required when partial leave is checked.' to_time: - 'The to time field is required when partial leave is checked.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: id: type: array example: - 'The id field is required.' - 'The selected id is invalid.' items: type: string reason: type: array example: - 'The reason field is required.' items: type: string from_date: type: array example: - 'The from date field is required.' items: type: string to_date: type: array example: - 'The to date field is required.' items: type: string from_time: type: array example: - 'The from time field is required when partial leave is checked.' items: type: string to_time: type: array example: - 'The to time field is required when partial leave is checked.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the leave request.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the leave request.' tags: - 'Leave Request Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the leave request to be updated.' example: 1 reason: type: string description: 'The reason for the leave.' example: 'Family function' from_date: type: date description: 'The start date of the leave in the format specified in the general settings.' example: '2024-08-05' to_date: type: date description: 'The end date of the leave in the format specified in the general settings.' example: '2024-08-01' from_time: type: time description: 'required_if:partialLeave,on The start time of the leave in HH:MM format.' example: '09:00' to_time: type: time description: 'required_if:partialLeave,on The end time of the leave in HH:MM format.' example: '17:00' status: type: string description: "nullable The status of the leave request. Can be 'pending', 'approved', or 'rejected'." example: pending leaveVisibleToAll: type: string description: "optional Set to 'on' if the leave should be visible to all users in the workspace." example: 'on' visible_to_ids: type: array description: 'nullable The IDs of users who can see the leave if it is not visible to all.' example: - 1 - 2 - 3 items: type: string partialLeave: type: string description: "optional Set to 'on' if the leave is partial (specific times within a day)." example: 'on' comment: type: string description: 'optional An optional comment that can only be set by admin or leave editor.' example: 'Approved due to exceptional circumstances' required: - id - reason - from_date - to_date '/api/leave-requests/destroy/{id}': delete: summary: 'Remove the specified leave request.' operationId: removeTheSpecifiedLeaveRequest description: 'This endpoint deletes a leave request item based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Leave request deleted successfully.' id: 1 type: leave_request data: [] properties: error: type: boolean example: false message: type: string example: 'Leave request deleted successfully.' id: type: integer example: 1 type: type: string example: leave_request data: type: array example: [] - description: '' type: object example: error: true message: 'Leave request not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Leave request not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the leave request.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the leave request.' tags: - 'Leave Request Management' parameters: - in: path name: id description: 'The ID of the leave request to be deleted.' example: 1 required: true schema: type: integer '/api/notifications/{id}': get: summary: 'List or search notifications.' operationId: listOrSearchNotifications description: 'This endpoint retrieves a list of notifications based on various filters. The user must be authenticated to perform this action. The request allows filtering by status, type, user, client, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter notifications by title, message and id.' example: Alert required: false schema: type: string description: 'optional The search term to filter notifications by title, message and id.' example: Alert - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, message, type, status, created_at, and updated_at.' example: title required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, title, message, type, status, created_at, and updated_at.' example: title - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: status description: 'optional The status of the notification to filter by. Can be "read" or "unread".' example: unread required: false schema: type: string description: 'optional The status of the notification to filter by. Can be "read" or "unread".' example: unread - in: query name: type description: 'optional The type of notifications to filter by.' example: project required: false schema: type: string description: 'optional The type of notifications to filter by.' example: project - in: query name: user_id description: 'optional The user ID to filter notifications by.' example: 1 required: false schema: type: integer description: 'optional The user ID to filter notifications by.' example: 1 - in: query name: client_id description: 'optional The client ID to filter notifications by.' example: 5 required: false schema: type: integer description: 'optional The client ID to filter notifications by.' example: 5 - in: query name: notification_type description: 'optional The notification type to filter by. Can be "system" or "push".' example: system required: false schema: type: string description: 'optional The notification type to filter by. Can be "system" or "push".' example: system - in: query name: limit description: 'optional The number of notifications per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of notifications per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Notifications retrieved successfully' total: 1 data: - id: 116 title: 'Task Status Updated' users: - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' clients: - id: 102 first_name: Test last_name: Client photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' type: Task type_id: 268 message: 'Madhavan Vaidya has updated the status of task sdff, ID:#268, from Default to Test From Pro.' status: Unread read_at: null created_at: '23-07-2024 17:50:09' updated_at: '23-07-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Notifications retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 116 title: 'Task Status Updated' users: - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' clients: - id: 102 first_name: Test last_name: Client photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' type: Task type_id: 268 message: 'Madhavan Vaidya has updated the status of task sdff, ID:#268, from Default to Test From Pro.' status: Unread read_at: null created_at: '23-07-2024 17:50:09' updated_at: '23-07-2024 19:08:16' items: type: object properties: id: type: integer example: 116 title: type: string example: 'Task Status Updated' users: type: array example: - id: 183 first_name: Girish last_name: Thacker photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 183 first_name: type: string example: Girish last_name: type: string example: Thacker photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' clients: type: array example: - id: 102 first_name: Test last_name: Client photo: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' items: type: object properties: id: type: integer example: 102 first_name: type: string example: Test last_name: type: string example: Client photo: type: string example: 'https://test-taskify.infinitietech.com/storage/photos/no-image.jpg' type: type: string example: Task type_id: type: integer example: 268 message: type: string example: 'Madhavan Vaidya has updated the status of task sdff, ID:#268, from Default to Test From Pro.' status: type: string example: Unread read_at: type: string example: null created_at: type: string example: '23-07-2024 17:50:09' updated_at: type: string example: '23-07-2024 19:08:16' - description: '' type: object example: error: true message: 'Notification not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Notification not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Notifications not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Notifications not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Notification Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the meeting to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 '/api/notifications/destroy/{id}': delete: summary: 'Remove the specified notification.' operationId: removeTheSpecifiedNotification description: 'This endpoint deletes a notification based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Notification deleted successfully.' data: [] properties: error: type: boolean example: false message: type: string example: 'Notification deleted successfully.' data: type: array example: [] - description: '' type: object example: error: true message: 'Notification not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Notification not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the notification.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the notification.' tags: - 'Notification Management' parameters: - in: path name: id description: 'The ID of the notification to be deleted.' example: 1 required: true schema: type: integer '/api/notifications/mark-as-read/{id}': patch: summary: 'Mark notification(s) as read.' operationId: markNotificationsAsRead description: "This endpoint marks a specific notification as read if a notification ID is provided.\nIf no ID is provided, it will mark all unread notifications as read for the authenticated user.\nThe user must be authenticated to perform this action." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Notification marked as read successfully.' properties: error: type: boolean example: false message: type: string example: 'Notification marked as read successfully.' - description: '' type: object example: error: false message: 'All notifications marked as read successfully.' properties: error: type: boolean example: false message: type: string example: 'All notifications marked as read successfully.' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Notification not found.' properties: error: type: boolean example: true message: type: string example: 'Notification not found.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'Failed to mark notifications as read.' properties: error: type: boolean example: true message: type: string example: 'Failed to mark notifications as read.' tags: - 'Notification Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the notification to mark as read.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 '/api/activity-log/{id}': get: summary: 'List or search activity logs.' operationId: listOrSearchActivityLogs description: 'This endpoint retrieves a list of activity logs based on various filters. The user must be authenticated to perform this action. The request allows filtering by date ranges, user, client, activity type, and other parameters.' parameters: - in: query name: search description: 'optional The search term to filter activity logs.' example: update required: false schema: type: string description: 'optional The search term to filter activity logs.' example: update - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: created_at required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: created_at - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: date_from description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' required: false schema: type: string description: "optional The start date range's start in YYYY-MM-DD format." example: '2024-01-01' - in: query name: date_to description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' required: false schema: type: string description: "optional The end date range's end in YYYY-MM-DD format." example: '2024-12-31' - in: query name: user_id description: 'optional The user ID to filter activity logs by.' example: 1 required: false schema: type: integer description: 'optional The user ID to filter activity logs by.' example: 1 - in: query name: client_id description: 'optional The client ID to filter activity logs by.' example: 5 required: false schema: type: integer description: 'optional The client ID to filter activity logs by.' example: 5 - in: query name: activity description: 'optional The activity type to filter by.' example: update required: false schema: type: string description: 'optional The activity type to filter by.' example: update - in: query name: type description: 'optional The type of activity to filter by.' example: task required: false schema: type: string description: 'optional The type of activity to filter by.' example: task - in: query name: type_id description: 'optional The type ID to filter activity logs by.' example: 10 required: false schema: type: integer description: 'optional The type ID to filter activity logs by.' example: 10 - in: query name: limit description: 'optional The number of logs per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of logs per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Activity logs retrieved successfully' total: 1 data: - id: 974 actor_id: 183 actor_name: 'Girish Thacker' actor_type: User type_id: 31 parent_type_id: '' type: Payslip parent_type: '' type_title: CTR-31 parent_type_title: '' activity: Created message: 'Girish Thacker created payslip PSL-31' created_at: '06-08-2024 18:10:41' updated_at: '06-08-2024 18:10:41' properties: error: type: boolean example: false message: type: string example: 'Activity logs retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 974 actor_id: 183 actor_name: 'Girish Thacker' actor_type: User type_id: 31 parent_type_id: '' type: Payslip parent_type: '' type_title: CTR-31 parent_type_title: '' activity: Created message: 'Girish Thacker created payslip PSL-31' created_at: '06-08-2024 18:10:41' updated_at: '06-08-2024 18:10:41' items: type: object properties: id: type: integer example: 974 actor_id: type: integer example: 183 actor_name: type: string example: 'Girish Thacker' actor_type: type: string example: User type_id: type: integer example: 31 parent_type_id: type: string example: '' type: type: string example: Payslip parent_type: type: string example: '' type_title: type: string example: CTR-31 parent_type_title: type: string example: '' activity: type: string example: Created message: type: string example: 'Girish Thacker created payslip PSL-31' created_at: type: string example: '06-08-2024 18:10:41' updated_at: type: string example: '06-08-2024 18:10:41' - description: '' type: object example: error: true message: 'Activity logs not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Activity logs not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Activity Log Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the activity log to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 '/api/activity-log/destroy/{id}': delete: summary: 'Remove the specified activity log.' operationId: removeTheSpecifiedActivityLog description: 'This endpoint deletes a activity log based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Record deleted successfully.' title: null data: [] properties: error: type: boolean example: false message: type: string example: 'Record deleted successfully.' title: type: string example: null data: type: array example: [] - description: '' type: object example: error: true message: 'Record not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Record not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the activity log.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the activity log.' tags: - 'Activity Log Management' parameters: - in: path name: id description: 'The ID of the activity log to be deleted.' example: 1 required: true schema: type: integer '/api/roles/{id}': get: summary: 'List or search roles.' operationId: listOrSearchRoles description: 'This endpoint retrieves a list of roles based on various filters. The request allows filtering by search term and pagination parameters.' parameters: - in: query name: search description: 'optional The search term to filter roles by id, name or guard_name.' example: Admin required: false schema: type: string description: 'optional The search term to filter roles by id, name or guard_name.' example: Admin - in: query name: sort description: 'optional The field to sort by. all fields are sortable. Defaults to "created_at".' example: name required: false schema: type: string description: 'optional The field to sort by. all fields are sortable. Defaults to "created_at".' example: name - in: query name: order description: 'optional The sort order, either "asc" or "desc". Defaults to "desc".' example: asc required: false schema: type: string description: 'optional The sort order, either "asc" or "desc". Defaults to "desc".' example: asc - in: query name: limit description: 'optional The number of roles per page for pagination. Defaults to 10.' example: 10 required: false schema: type: integer description: 'optional The number of roles per page for pagination. Defaults to 10.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results. Defaults to 0.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results. Defaults to 0.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Roles retrieved successfully.' total: 1 data: - id: 1 name: Admin guard_name: web created_at: '10-10-2023 17:50:09' updated_at: '23-07-2024 19:08:16' properties: error: type: boolean example: false message: type: string example: 'Roles retrieved successfully.' total: type: integer example: 1 data: type: array example: - id: 1 name: Admin guard_name: web created_at: '10-10-2023 17:50:09' updated_at: '23-07-2024 19:08:16' items: type: object properties: id: type: integer example: 1 name: type: string example: Admin guard_name: type: string example: web created_at: type: string example: '10-10-2023 17:50:09' updated_at: type: string example: '23-07-2024 19:08:16' - description: '' type: object example: error: true message: 'Role not found.' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Role not found.' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Roles not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Roles not found' total: type: integer example: 0 data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while retrieving the roles.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while retrieving the roles.' tags: - 'Role/Permission Management' security: [] parameters: - in: path name: id description: 'Optional parameter. optional The ID of the role to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 '/api/permissions/{permission}': get: summary: 'Check user permissions.' operationId: checkUserPermissions description: "This endpoint checks the module-wise permissions assigned to the authenticated user.\nIf a specific permission is provided in the URL, it checks only that permission for the authenticated user.\nOtherwise, it returns all permissions for the authenticated user." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Permissions check completed.\",\n \"data\": {\n \"permissions\": {\n \"create_projects\": true,\n \"manage_projects\": false,\n ...\n }\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while checking the permission.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while checking the permission.' tags: - 'Role/Permission Management' parameters: - in: path name: permission description: 'Optional parameter. optional The specific permission to check.' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: "\"edit-post\"\n\nHere is the module-wise permissions list.\n\nActivity Log:\n- manage_activity_log\n- delete_activity_log\n\nAllowances:\n- create_allowances\n- manage_allowances\n- edit_allowances\n- delete_allowances\n\nClients:\n- create_clients\n- manage_clients\n- edit_clients\n- delete_clients\n\nContract Types:\n- create_contract_types\n- manage_contract_types\n- edit_contract_types\n- delete_contract_types\n\nContracts:\n- create_contracts\n- manage_contracts\n- edit_contracts\n- delete_contracts\n\nDeductions:\n- create_deductions\n- manage_deductions\n- edit_deductions\n- delete_deductions\n\nEstimates/Invoices:\n- create_estimates_invoices\n- manage_estimates_invoices\n- edit_estimates_invoices\n- delete_estimates_invoices\n\nExpense Types:\n- create_expense_types\n- manage_expense_types\n- edit_expense_types\n- delete_expense_types\n\nExpenses:\n- create_expenses\n- manage_expenses\n- edit_expenses\n- delete_expenses\n\nItems:\n- create_items\n- manage_items\n- edit_items\n- delete_items\n\nMedia:\n- create_media\n- manage_media\n- delete_media\n\nMeetings:\n- create_meetings\n- manage_meetings\n- edit_meetings\n- delete_meetings\n\nMilestones:\n- create_milestones\n- manage_milestones\n- edit_milestones\n- delete_milestones\n\nPayment Methods:\n- create_payment_methods\n- manage_payment_methods\n- edit_payment_methods\n- delete_payment_methods\n\nPayments:\n- create_payments\n- manage_payments\n- edit_payments\n- delete_payments\n\nPayslips:\n- create_payslips\n- manage_payslips\n- edit_payslips\n- delete_payslips\n\nPriorities:\n- create_priorities\n- manage_priorities\n- edit_priorities\n- delete_priorities\n\nProjects:\n- create_projects\n- manage_projects\n- edit_projects\n- delete_projects\n\nStatuses:\n- create_statuses\n- manage_statuses\n- edit_statuses\n- delete_statuses\n\nSystem Notifications:\n- manage_system_notifications\n- delete_system_notifications\n\nTags:\n- create_tags\n- manage_tags\n- edit_tags\n- delete_tags\n\nTasks:\n- create_tasks\n- manage_tasks\n- edit_tasks\n- delete_tasks\n\nTaxes:\n- create_taxes\n- manage_taxes\n- edit_taxes\n- delete_taxes\n\nTimesheet:\n- create_timesheet\n- manage_timesheet\n- delete_timesheet\n\nUnits:\n- create_units\n- manage_units\n- edit_units\n- delete_units\n\nUsers:\n- create_users\n- manage_users\n- edit_users\n- delete_users\n\nWorkspaces:\n- create_workspaces\n- manage_workspaces\n- edit_workspaces\n- delete_workspaces" /api/roles/store: post: summary: 'Create a new role.' operationId: createANewRole description: 'This endpoint allows authenticated users to create a new role and assign permissions.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Role created successfully.' role: id: 5 name: Supervisor permissions: - edit_tasks - assign_tasks properties: error: type: boolean example: false message: type: string example: 'Role created successfully.' role: type: object properties: id: type: integer example: 5 name: type: string example: Supervisor permissions: type: array example: - edit_tasks - assign_tasks items: type: string 409: description: '' content: application/json: schema: type: object example: error: true message: 'A role `Manager` already exists.' properties: error: type: boolean example: true message: type: string example: 'A role `Manager` already exists.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation failed.' errors: name: - 'The name field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation failed.' errors: type: object properties: name: type: array example: - 'The name field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the role.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the role.' tags: - 'Role/Permission Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The updated name of the role.' example: '"Supervisor"' permissions: type: array description: 'optional A list of permission IDs to assign to the role.' example: - 1 - 2 - 3 items: type: string required: - name '/api/roles/update/{id}': post: summary: 'Update an existing role.' operationId: updateAnExistingRole description: 'This endpoint allows authenticated users to update a role name and modify its permissions.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Role updated successfully.' properties: error: type: boolean example: false message: type: string example: 'Role updated successfully.' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Role not found.' properties: error: type: boolean example: true message: type: string example: 'Role not found.' 409: description: '' content: application/json: schema: type: object example: error: true message: 'A role `Manager` already exists.' properties: error: type: boolean example: true message: type: string example: 'A role `Manager` already exists.' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation failed.' errors: name: - 'The name field is required.' properties: error: type: boolean example: true message: type: string example: 'Validation failed.' errors: type: object properties: name: type: array example: - 'The name field is required.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the role.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the role.' tags: - 'Role/Permission Management' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The updated name of the role.' example: '"Supervisor"' permissions: type: array description: 'optional A list of permission IDs to assign to the role.' example: - 1 - 2 - 3 items: type: string required: - name parameters: - in: path name: id description: 'The ID of the role to update.' example: 5 required: true schema: type: integer '/api/roles/destroy/{id}': delete: summary: 'Delete a role.' operationId: deleteARole description: 'This endpoint allows authenticated users to delete a specific role.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Role deleted successfully.' properties: error: type: boolean example: false message: type: string example: 'Role deleted successfully.' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Role not found.' properties: error: type: boolean example: true message: type: string example: 'Role not found.' 409: description: '' content: application/json: schema: type: object example: error: true message: 'Cannot delete this role because it is assigned to users.' properties: error: type: boolean example: true message: type: string example: 'Cannot delete this role because it is assigned to users.' 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the role.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the role.' tags: - 'Role/Permission Management' parameters: - in: path name: id description: 'The ID of the role to delete.' example: 3 required: true schema: type: integer '/api/roles/get/{id}': get: summary: 'Get a specific role with its permissions, grouped by category.' operationId: getASpecificRoleWithItsPermissionsGroupedByCategory description: '' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false role: id: 1 name: Admin permissions: projects: create_projects: true delete_projects: false tasks: create_tasks: true properties: error: type: boolean example: false role: type: object properties: id: type: integer example: 1 name: type: string example: Admin permissions: type: object properties: projects: type: object properties: create_projects: type: boolean example: true delete_projects: type: boolean example: false tasks: type: object properties: create_tasks: type: boolean example: true tags: - 'Role/Permission Management' parameters: - in: path name: id description: 'The ID of the role to retrieve.' example: 1 required: true schema: type: integer /api/permissions-list: get: summary: 'List all permissions.' operationId: listAllPermissions description: 'This endpoint retrieves a list of all permissions.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Permissions retrieved successfully.\",\n \"total\": 5,\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"create_projects\",\n \"guard_name\": \"web\",\n \"created_at\": \"2023-10-10T17:50:09.000000Z\",\n \"updated_at\": \"2024-07-23T19:08:16.000000Z\"\n },\n ...\n ]\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while retrieving the permissions.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while retrieving the permissions.' tags: - 'Role/Permission Management' security: [] '/api/settings/{variable}': get: summary: 'Retrieve the settings for a specific variable.' operationId: retrieveTheSettingsForASpecificVariable description: 'This endpoint returns the settings for a given variable. The user must be authenticated.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Settings retrieved successfully' settings: company_title: Taskify currency_full_form: 'Indian Rupee' currency_symbol: ₹ currency_code: INR currency_symbol_position: before currency_formate: comma_separated decimal_points_in_currency: '2' allowed_max_upload_size: '2000' allowSignup: 1 timezone: Asia/Kolkata date_format: DD-MM-YYYY|d-m-Y time_format: 'H:i:s' toast_position: toast-bottom-center toast_time_out: '2' footer_text: '

made with ❤️ by Infinitie Technologies

' full_logo: 'https://test-taskify.infinitietech.com/storage/logos/zEy4tSCAFSMczWbOoxBZ3B43Nc9eeqMlNBXDrOzn.png' half_logo: null favicon: 'https://test-taskify.infinitietech.com/storage/logos/2FZTNY1qDTz7CTtwWC8Hh1eY4l7cIHgOXG2stVIU.png' properties: error: type: boolean example: false message: type: string example: 'Settings retrieved successfully' settings: type: object properties: company_title: type: string example: Taskify currency_full_form: type: string example: 'Indian Rupee' currency_symbol: type: string example: ₹ currency_code: type: string example: INR currency_symbol_position: type: string example: before currency_formate: type: string example: comma_separated decimal_points_in_currency: type: string example: '2' allowed_max_upload_size: type: string example: '2000' allowSignup: type: integer example: 1 timezone: type: string example: Asia/Kolkata date_format: type: string example: DD-MM-YYYY|d-m-Y time_format: type: string example: 'H:i:s' toast_position: type: string example: toast-bottom-center toast_time_out: type: string example: '2' footer_text: type: string example: '

made with ❤️ by Infinitie Technologies

' full_logo: type: string example: 'https://test-taskify.infinitietech.com/storage/logos/zEy4tSCAFSMczWbOoxBZ3B43Nc9eeqMlNBXDrOzn.png' half_logo: type: string example: null favicon: type: string example: 'https://test-taskify.infinitietech.com/storage/logos/2FZTNY1qDTz7CTtwWC8Hh1eY4l7cIHgOXG2stVIU.png' - description: '' type: object example: error: true message: 'Un Authorized Action!' properties: error: type: boolean example: true message: type: string example: 'Un Authorized Action!' - description: '' type: object example: error: true message: 'Setting not found' properties: error: type: boolean example: true message: type: string example: 'Setting not found' tags: - 'Setting Management' parameters: - in: path name: variable description: 'The variable type for which settings are to be retrieved. Must be one of the following: general_settings, pusher_settings, email_settings, media_storage_settings, sms_gateway_settings, whatsapp_settings, privacy_policy, about_us, terms_conditions.' example: general_settings required: true schema: type: string /api/settings/update: post: summary: 'Store the settings for a specific variable.' operationId: storeTheSettingsForASpecificVariable description: 'This endpoint stores the settings for a given variable. The user must be authenticated.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Settings saved successfully.' properties: error: type: boolean example: false message: type: string example: 'Settings saved successfully.' - description: '' type: object example: error: true message: 'Un Authorized Action!' properties: error: type: boolean example: true message: type: string example: 'Un Authorized Action!' tags: - 'Setting Management' requestBody: required: true content: application/json: schema: type: object properties: variable: type: string description: 'The variable type for which settings are to be stored. Must be one of the following: general_settings, pusher_settings, email_settings, media_storage_settings, sms_gateway_settings, whatsapp_settings, privacy_policy, about_us, terms_conditions.' example: general_settings company_title: type: string description: 'The title of the company.' example: Taskify site_url: type: string description: 'The URL of the site.' example: 'https://www.taskify.com' timezone: type: string description: 'The timezone of the site.' example: Asia/Kolkata currency_full_form: type: string description: 'The full form of the currency.' example: 'Indian Rupee' currency_symbol: type: string description: 'The symbol of the currency.' example: ₹ currency_code: type: string description: 'The code of the currency.' example: INR date_format: type: string description: 'The format of the date.' example: DD-MM-YYYY|d-m-Y toast_time_out: type: numeric description: 'The time duration for the toast message to be displayed.' example: '2' allowed_max_upload_size: type: numeric description: 'The maximum allowed upload size.' example: '2000' required: - variable - company_title - site_url - timezone - currency_full_form - currency_symbol - currency_code - date_format parameters: - in: path name: variable description: 'The variable type for which settings are to be stored. Must be one of the following: general_settings, pusher_settings, email_settings, media_storage_settings, sms_gateway_settings, whatsapp_settings, privacy_policy, about_us, terms_conditions.' example: general_settings required: true schema: type: string /api/expenses/store: post: summary: 'Create a new expense.' operationId: createANewExpense description: 'This endpoint creates a new expense item with the specified title, expense_type_id,user_id,amount,expense_date,note. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Expense created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Expense Title',\n 'expense_type_id' => '1',\n 'user_id' => '1',\n 'amount' => '100.00',\n 'expense_date' => '2023-10-01',\n 'note' => 'Expense note',\n 'created_by' => 'John Doe',\n 'created_at' => format_date($exp->created_at, true),\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"title\": [\n \"The title field is required.\"\n ],\n \"expense_type_id\": [\n \"The expense type field is required.\"\n ],\n \"user_id\": [\n \"The user id field is required.\"\n ],\n \"amount\": [\n \"The amount field is required.\"\n ],\n \"expense_date\": [\n \"The expense date field is required.\"\n ],\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the expense.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the expense.' tags: - 'Expense Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The note of the expense.' example: 'Finish report' required: - title '/api/expenses/{id}': get: summary: 'List or search expenses.' operationId: listOrSearchExpenses description: 'Retrieve a paginated list of expenses or a single expense by ID.' parameters: - in: query name: search description: 'optional Search keyword for title, amount, note, or ID.' example: Lunch required: false schema: type: string description: 'optional Search keyword for title, amount, note, or ID.' example: Lunch - in: query name: sort description: 'optional Column to sort by. Default: id. Allowed: id, title, created_at, updated_at.' example: title required: false schema: type: string description: 'optional Column to sort by. Default: id. Allowed: id, title, created_at, updated_at.' example: title - in: query name: order description: 'optional Sort order: ASC or DESC. Default: DESC.' example: ASC required: false schema: type: string description: 'optional Sort order: ASC or DESC. Default: DESC.' example: ASC - in: query name: limit description: 'optional Number of records per page.' example: 10 required: false schema: type: integer description: 'optional Number of records per page.' example: 10 - in: query name: offset description: 'optional Offset for pagination.' example: 0 required: false schema: type: integer description: 'optional Offset for pagination.' example: 0 - in: query name: 'type_ids[]' description: 'optional Filter by expense type IDs.' example: - 1 - 2 required: false schema: type: array description: 'optional Filter by expense type IDs.' example: - 1 - 2 items: type: integer - in: query name: 'user_ids[]' description: 'optional Filter by user IDs.' example: - 3 - 5 required: false schema: type: array description: 'optional Filter by user IDs.' example: - 3 - 5 items: type: integer - in: query name: date_from description: 'date optional Start date for expense_date filtering.' example: '2023-01-01' required: false schema: type: string description: 'date optional Start date for expense_date filtering.' example: '2023-01-01' - in: query name: date_to description: 'date optional End date for expense_date filtering.' example: '2023-01-31' required: false schema: type: string description: 'date optional End date for expense_date filtering.' example: '2023-01-31' - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Expenses retrieved successfully' total: 2 data: - id: 1 title: 'Travel Reimbursement' expense_type_id: 2 expense_type: Travel user_id: 5 user: id: 5 first_name: Alice last_name: Smith email: alice@example.com photo: 'https://yourdomain.com/storage/photos/alice.jpg' amount: '150.00' expense_date: '2023-10-01' note: 'Flight ticket' created_by: 'John Doe' created_at: '2023-10-01' properties: error: type: boolean example: false message: type: string example: 'Expenses retrieved successfully' total: type: integer example: 2 data: type: array example: - id: 1 title: 'Travel Reimbursement' expense_type_id: 2 expense_type: Travel user_id: 5 user: id: 5 first_name: Alice last_name: Smith email: alice@example.com photo: 'https://yourdomain.com/storage/photos/alice.jpg' amount: '150.00' expense_date: '2023-10-01' note: 'Flight ticket' created_by: 'John Doe' created_at: '2023-10-01' items: type: object properties: id: type: integer example: 1 title: type: string example: 'Travel Reimbursement' expense_type_id: type: integer example: 2 expense_type: type: string example: Travel user_id: type: integer example: 5 user: type: object properties: id: type: integer example: 5 first_name: type: string example: Alice last_name: type: string example: Smith email: type: string example: alice@example.com photo: type: string example: 'https://yourdomain.com/storage/photos/alice.jpg' amount: type: string example: '150.00' expense_date: type: string example: '2023-10-01' note: type: string example: 'Flight ticket' created_by: type: string example: 'John Doe' created_at: type: string example: '2023-10-01' 404: description: '' content: application/json: schema: type: object example: error: true message: 'Expense not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Expense not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Expense Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the expense to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/expenses/update: post: summary: 'Update a existing expense.' operationId: updateAExistingExpense description: 'This endpoint update existing expense item with the specified title, expense_type_id,user_id,amount,expense_date,note. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Expense created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Expense Title',\n 'expense_type_id' => '1',\n 'user_id' => '1',\n 'amount' => '100.00',\n 'expense_date' => '2023-10-01',\n 'note' => 'Expense note',\n 'created_by' => 'John Doe',\n 'created_at' => format_date($exp->created_at, true),\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"title\": [\n \"The title field is required.\"\n ],\n \"expense_type_id\": [\n \"The expense type field is required.\"\n ],\n \"user_id\": [\n \"The user id field is required.\"\n ],\n \"amount\": [\n \"The amount field is required.\"\n ],\n \"expense_date\": [\n \"The expense date field is required.\"\n ],\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the expense.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the expense.' tags: - 'Expense Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the expense.' example: '1' title: type: string description: 'The title of the expense.' example: 'Finish report' expense_type_id: type: string description: 'The expense_type_id of the expense.' example: '1' user_id: type: string description: 'The user_id of the expense.' example: '1' amount: type: string description: 'The amount of the expense.' example: 'Finish report' expense_date: type: string description: 'The expense_date of the expense.' example: '2024-08-07' note: type: string description: 'The note of the expense.' example: 'Finish report' required: - id - title - expense_type_id - user_id - amount - expense_date - note '/api/expenses/destroy/{id}': delete: summary: 'Remove the specified expense.' operationId: removeTheSpecifiedExpense description: 'This endpoint deletes a expense item based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Expense deleted successfully.\",\n \"id\": 1,\n \"title\": \"Expense Title\"\n \"data\": []\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the expense.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the expense.' tags: - 'Expense Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer /api/expenses/expense-types/store: post: summary: 'Create a new expense type.' operationId: createANewExpenseType description: 'This endpoint creates a new expense type item with the specified title, description. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Expense Type created successfully.\",\n\"id\": 1,\n\"data\": {\n 'id' => '1',\n 'title' => 'Expense Title',\n 'description' => 'Expense Description',\n 'created_at' => 2023-10-01 12:00:00',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"title\": [\n \"The title field is required.\"\n ],\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the expense type.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the expense type.' tags: - 'Expense Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the expense.' example: 'Finish report' description: type: string description: 'The description of the expense.' example: 'Finish report' required: - title - description '/api/expenses/expense-types/list/{id}': get: summary: 'List or search expense types.' operationId: listOrSearchExpenseTypes description: "Retrieve a list of expense types, optionally filtered by search term or a specific ID.\nSupports sorting, pagination, and workspace scoping. Authentication is required." parameters: - in: query name: search description: 'optional Search term for title, description, or ID.' example: Travel required: false schema: type: string description: 'optional Search term for title, description, or ID.' example: Travel - in: query name: sort description: 'optional Field to sort by. Defaults to `id`. Sortable fields: `id`, `title`, `created_at`, `updated_at`.' example: title required: false schema: type: string description: 'optional Field to sort by. Defaults to `id`. Sortable fields: `id`, `title`, `created_at`, `updated_at`.' example: title - in: query name: order description: 'optional Sort order: `ASC` or `DESC`. Defaults to `DESC`.' example: ASC required: false schema: type: string description: 'optional Sort order: `ASC` or `DESC`. Defaults to `DESC`.' example: ASC - in: query name: limit description: 'optional Number of items per page. Default is 10.' example: 10 required: false schema: type: integer description: 'optional Number of items per page. Default is 10.' example: 10 - in: query name: offset description: 'optional Number of items to skip (for pagination). Default is 0.' example: 0 required: false schema: type: integer description: 'optional Number of items to skip (for pagination). Default is 0.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: 'Single Expense Type Found' type: object example: error: false message: 'Expense type retrieved successfully' total: 1 data: - id: 1 title: Travel description: 'Travel expenses' created_at: '2023-10-01' properties: error: type: boolean example: false message: type: string example: 'Expense type retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 title: Travel description: 'Travel expenses' created_at: '2023-10-01' items: type: object properties: id: type: integer example: 1 title: type: string example: Travel description: type: string example: 'Travel expenses' created_at: type: string example: '2023-10-01' - description: 'Multiple Expense Types Found' type: object example: error: false message: 'Expense types retrieved successfully' total: 2 data: - id: 1 title: Travel description: 'Travel expenses' created_at: '2023-10-01' - id: 2 title: 'Office Supplies' description: 'Stationery and office supplies' created_at: '2023-10-03' properties: error: type: boolean example: false message: type: string example: 'Expense types retrieved successfully' total: type: integer example: 2 data: type: array example: - id: 1 title: Travel description: 'Travel expenses' created_at: '2023-10-01' - id: 2 title: 'Office Supplies' description: 'Stationery and office supplies' created_at: '2023-10-03' items: type: object properties: id: type: integer example: 1 title: type: string example: Travel description: type: string example: 'Travel expenses' created_at: type: string example: '2023-10-01' - description: 'No Results Found' type: object example: error: true message: 'Expense type not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Expense type not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Expense Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the specific expense type to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/expenses/expense-types/update: post: summary: 'Update an existing expense type.' operationId: updateAnExistingExpenseType description: 'This endpoint update an existing expense type item with the specified title, description. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Expense Type created successfully.\",\n\"id\": 1,\n\"data\": {\n 'id' => '1',\n 'title' => 'Expense Title',\n 'description' => 'Expense Description',\n 'created_at' => 2023-10-01 12:00:00',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"title\": [\n \"The title field is required.\"\n ],\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the expense type.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the expense type.' tags: - 'Expense Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the expense.' example: '1' title: type: string description: 'The title of the expense.' example: 'Finish report' description: type: string description: 'The description of the expense.' example: 'Finish report' required: - id - title - description '/api/expenses/expense-types/destroy/{id}': delete: summary: 'Remove the specified expense type.' operationId: removeTheSpecifiedExpenseType description: 'This endpoint deletes a expense type item based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Expense Type deleted successfully.\",\n \"id\": 1,\n \"title\": \"Expense Type Title\"\n \"data\": []\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the expense type.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the expense type.' tags: - 'Expense Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer /api/payments/store: post: summary: 'Create a new payment.' operationId: createANewPayment description: 'This endpoint creates a new payment with the specified user_id, invoice_id,payment_method_id,amount,payment_date,note. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Payment created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'user_id' => '1',\n 'invoice_id' => '1',\n 'payment_method_id' => '1',\n 'amount' => '100.00',\n 'payment_date' => '2023-10-01',\n 'note' => 'Payment note',\n 'created_at' => format_date($exp->created_at, true),\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"user_id\": [\n \"The user_id field is required.\"\n ],\n \"invoice_id\": [\n \"The invoice_id field is required.\"\n ],\n \"payment_method_id\": [\n \"The payment method id field is required.\"\n ],\n \"amount\": [\n \"The amount field is required.\"\n ],\n \"payment_date\": [\n \"The payment date field is required.\"\n ],\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the payment.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the payment.' tags: - 'Payment Management' requestBody: required: true content: application/json: schema: type: object properties: user_id: type: string description: 'The user_id of the payment.' example: '1' invoice_id: type: string description: 'The invoice_id of the payment.' example: '1' payment_method_id: type: string description: 'The payment_method_id of the payment methods.' example: '1' amount: type: string description: 'The amount of the amount.' example: '100' payment_date: type: string description: 'The payment_date of the payment.' example: '2024-08-07' note: type: string description: 'The note of the note.' example: 'Finish report' required: - user_id - invoice_id - payment_method_id - amount - payment_date - note '/api/payments/{id}': get: summary: 'List or search payments.' operationId: listOrSearchPayments description: 'This endpoint retrieves a list of payments based on various filters. The user must be authenticated to perform this action. The request allows searching and sorting by different parameters.' parameters: - in: query name: search description: 'optional The search term to filter tags by title or id.' example: Title required: false schema: type: string description: 'optional The search term to filter tags by title or id.' example: Title - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: limit description: 'optional The number of tags per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of tags per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Payment retrieved successfully' total: 1 data: - id: 1 user_id: 1 user: id: 1 first_name: Admin last_name: User email: admin@gmail.com photo: 'https://dev-taskify.taskhub.company/storage/photos/C03PJmIQInts2j3O2on99Nilu45UcChrepcsIFxO.jpg' invoice_id: null invoice: '-' payment_method_id: 1 payment_method: some amount: '₹ 100.00' payment_date: '2025-04-16' note: '123' created_by: 'Admin User' created_at: '2025-04-16 09:41:57' updated_at: '2025-04-16 09:41:57' properties: error: type: boolean example: false message: type: string example: 'Payment retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 user_id: 1 user: id: 1 first_name: Admin last_name: User email: admin@gmail.com photo: 'https://dev-taskify.taskhub.company/storage/photos/C03PJmIQInts2j3O2on99Nilu45UcChrepcsIFxO.jpg' invoice_id: null invoice: '-' payment_method_id: 1 payment_method: some amount: '₹ 100.00' payment_date: '2025-04-16' note: '123' created_by: 'Admin User' created_at: '2025-04-16 09:41:57' updated_at: '2025-04-16 09:41:57' items: type: object properties: id: type: integer example: 1 user_id: type: integer example: 1 user: type: object properties: id: type: integer example: 1 first_name: type: string example: Admin last_name: type: string example: User email: type: string example: admin@gmail.com photo: type: string example: 'https://dev-taskify.taskhub.company/storage/photos/C03PJmIQInts2j3O2on99Nilu45UcChrepcsIFxO.jpg' invoice_id: type: string example: null invoice: type: string example: '-' payment_method_id: type: integer example: 1 payment_method: type: string example: some amount: type: string example: '₹ 100.00' payment_date: type: string example: '2025-04-16' note: type: string example: '123' created_by: type: string example: 'Admin User' created_at: type: string example: '2025-04-16 09:41:57' updated_at: type: string example: '2025-04-16 09:41:57' - description: '' type: object example: error: true message: 'Payment not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Payment not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Payments not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Payments not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Payment Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the tag to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/payments/update: post: summary: 'Update an existing payment.' operationId: updateAnExistingPayment description: 'This endpoint updates an existing payment with the specified user_id, invoice_id,payment_method_id,amount,payment_date,note. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Payment created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'user_id' => '1',\n 'invoice_id' => '1',\n 'payment_method_id' => '1',\n 'amount' => '100.00',\n 'payment_date' => '2023-10-01',\n 'note' => 'Payment note',\n 'created_at' => format_date($exp->created_at, true),\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"user_id\": [\n \"The user_id field is required.\"\n ],\n \"invoice_id\": [\n \"The invoice_id field is required.\"\n ],\n \"payment_method_id\": [\n \"The payment method id field is required.\"\n ],\n \"amount\": [\n \"The amount field is required.\"\n ],\n \"payment_date\": [\n \"The payment date field is required.\"\n ],\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the payment.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the payment.' tags: - 'Payment Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the payment. Example : 1' example: quia user_id: type: string description: 'The user_id of the payment.' example: '1' invoice_id: type: string description: 'The invoice_id of the payment.' example: '1' payment_method_id: type: string description: 'The payment_method_id of the payment methods.' example: '1' amount: type: string description: 'The amount of the amount.' example: '100' payment_date: type: string description: 'The payment_date of the payment.' example: '2024-08-07' note: type: string description: 'The note of the note.' example: 'Finish report' required: - id - user_id - invoice_id - payment_method_id - amount - payment_date - note '/api/payments/destroy/{id}': delete: summary: 'Remove the specified payment.' operationId: removeTheSpecifiedPayment description: 'This endpoint deletes a payment based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Payment deleted successfully.' id: 1 data: [] properties: error: type: boolean example: false message: type: string example: 'Payment deleted successfully.' id: type: integer example: 1 data: type: array example: [] - description: '' type: object example: error: true message: 'Payment not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Payment not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the Payment.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the Payment.' tags: - 'Payment Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer '/api/payment-methods/{id}': get: summary: 'List or search payments methods.' operationId: listOrSearchPaymentsMethods description: 'This endpoint retrieves a list of payments methods based on various filters. The user must be authenticated to perform this action. The request allows searching and sorting by different parameters.' parameters: - in: query name: search description: 'optional The search term to filter tags by title or id.' example: Title required: false schema: type: string description: 'optional The search term to filter tags by title or id.' example: Title - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: limit description: 'optional The number of tags per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of tags per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Payment Method retrieved successfully' total: 1 data: - id: 1 title: 'Payment Method Title' created_at: '2025-04-16 09:41:57' updated_at: '2025-04-16 09:41:57' properties: error: type: boolean example: false message: type: string example: 'Payment Method retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 title: 'Payment Method Title' created_at: '2025-04-16 09:41:57' updated_at: '2025-04-16 09:41:57' items: type: object properties: id: type: integer example: 1 title: type: string example: 'Payment Method Title' created_at: type: string example: '2025-04-16 09:41:57' updated_at: type: string example: '2025-04-16 09:41:57' - description: '' type: object example: error: true message: 'Payment Method not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Payment Method not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Payment Methods not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Payment Methods not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Payment Method Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the tag to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/payment-methods/store: post: summary: 'Create a payment method.' operationId: createAPaymentMethod description: 'This endpoint creates a payment method. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Payment Method created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Title',\n 'created_at =>'2025-04-16',\n 'updated_at' =>'2025-04-16',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\n \"The id field is required.\"\n ],\n \"title\": [\n \"The title field is required.\"\n ],\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the payment method.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the payment method.' tags: - 'Payment Method Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the payment method.' example: Title required: - title /api/payment-methods/update: post: summary: 'Update an existing payment method.' operationId: updateAnExistingPaymentMethod description: 'This endpoint updates an existing payment method with the specified id. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Payment Method created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Title',\n 'created_at =>'2025-04-16',\n 'updated_at' =>'2025-04-16',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\n \"The id field is required.\"\n ],\n \"title\": [\n \"The title field is required.\"\n ],\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the payment method.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the payment method.' tags: - 'Payment Method Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the payment method. Example : 1' example: vero title: type: string description: 'The title of the payment method.' example: Title required: - id - title '/api/payment-methods/destroy/{id}': delete: summary: 'Remove the specified payment method.' operationId: removeTheSpecifiedPaymentMethod description: 'This endpoint deletes a payment method based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Payment Method deleted successfully.' id: 1 data: [] properties: error: type: boolean example: false message: type: string example: 'Payment Method deleted successfully.' id: type: integer example: 1 data: type: array example: [] - description: '' type: object example: error: true message: 'Payment Method not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Payment Method not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the Payment Method.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the Payment Method.' tags: - 'Payment Method Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer '/api/taxes/{id}': get: summary: 'List or search taxes.' operationId: listOrSearchTaxes description: "This endpoint retrieves a list of taxes based on various filters. The user must be authenticated to perform this action.\nIt supports searching, sorting, filtering by type, and pagination." parameters: - in: query name: search description: 'optional The term to search taxes by title, amount, percentage, type, or ID.' example: GST required: false schema: type: string description: 'optional The term to search taxes by title, amount, percentage, type, or ID.' example: GST - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, updated_at.' example: created_at required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, updated_at.' example: created_at - in: query name: order description: 'optional The sorting order, either ASC or DESC. Defaults to DESC.' example: ASC required: false schema: type: string description: 'optional The sorting order, either ASC or DESC. Defaults to DESC.' example: ASC - in: query name: types description: 'optional Filter taxes by type. Accepts an array of types such as "percentage" or "fixed".' example: - percentage required: false schema: type: array description: 'optional Filter taxes by type. Accepts an array of types such as "percentage" or "fixed".' example: - percentage items: type: string - in: query name: limit description: 'optional Number of records per page. Defaults to 10.' example: 10 required: false schema: type: integer description: 'optional Number of records per page. Defaults to 10.' example: 10 - in: query name: offset description: 'optional The offset for pagination. Defaults to 0.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination. Defaults to 0.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Taxes retrieved successfully' total: 1 data: - id: 1 title: GST type: percentage amount: null percentage: 18 created_at: '2025-04-16' updated_at: '2025-04-16' properties: error: type: boolean example: false message: type: string example: 'Taxes retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 title: GST type: percentage amount: null percentage: 18 created_at: '2025-04-16' updated_at: '2025-04-16' items: type: object properties: id: type: integer example: 1 title: type: string example: GST type: type: string example: percentage amount: type: string example: null percentage: type: integer example: 18 created_at: type: string example: '2025-04-16' updated_at: type: string example: '2025-04-16' - description: '' type: object example: error: false message: 'Tax retrieved successfully' total: 1 data: id: 1 title: GST type: percentage amount: null percentage: 18 created_at: '2025-04-16' updated_at: '2025-04-16' properties: error: type: boolean example: false message: type: string example: 'Tax retrieved successfully' total: type: integer example: 1 data: type: object properties: id: type: integer example: 1 title: type: string example: GST type: type: string example: percentage amount: type: string example: null percentage: type: integer example: 18 created_at: type: string example: '2025-04-16' updated_at: type: string example: '2025-04-16' - description: '' type: object example: error: true message: 'Tax not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Tax not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Tax Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the tax to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/taxes/store: post: summary: 'Create a tax.' operationId: createATax description: 'This endpoint creates a tax. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Tax created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Title',\n 'type' => 'amount',\n 'amount' => '100',\n 'percentage' => null,\n 'created_at =>'2025-04-16',\n 'updated_at' =>'2025-04-16',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\n \"The id field is required.\"\n ],\n \"title\": [\n \"The title field is required.\"\n ],\n \"type\": [\n \"The type field is required.\"\n ],\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the tax.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the tax.' tags: - 'Tax Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the tax.' example: Title type: type: string description: 'The type of the tax.' example: amount amount: type: string description: 'if type is amount The amount of the tax.' example: '100' percentage: type: string description: 'if type is percentage The percentage of the tax.' example: '10' required: - title - type - amount - percentage /api/taxes/update: post: summary: 'Update a tax.' operationId: updateATax description: 'This endpoint updates an existing tax. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Tax updated successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Title',\n 'type' => 'amount',\n 'amount' => '100',\n 'percentage' => null,\n 'created_at =>'2025-04-16',\n 'updated_at' =>'2025-04-16',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\n \"The id field is required.\"\n ],\n \"title\": [\n \"The title field is required.\"\n ],\n\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the tax.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the tax.' tags: - 'Tax Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the tax.' example: '1' title: type: string description: 'The title of the tax.' example: Title required: - id - title '/api/taxes/destroy/{id}': delete: summary: 'Remove the specified tax.' operationId: removeTheSpecifiedTax description: 'This endpoint deletes a tax based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Tax deleted successfully.' id: 1 data: [] properties: error: type: boolean example: false message: type: string example: 'Tax deleted successfully.' id: type: integer example: 1 data: type: array example: [] - description: '' type: object example: error: true message: 'Tax not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Tax not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the Tax.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the Tax.' tags: - 'Tax Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer '/api/units/{id}': get: summary: 'List or search units.' operationId: listOrSearchUnits description: 'This endpoint retrieves a list of units based on various filters. The user must be authenticated to perform this action. The request allows searching and sorting by different parameters.' parameters: - in: query name: search description: 'optional The search term to filter tags by title or id.' example: Title required: false schema: type: string description: 'optional The search term to filter tags by title or id.' example: Title - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: limit description: 'optional The number of tags per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of tags per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination, indicating the starting point of results.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Unit retrieved successfully' total: 1 data: - id: 1 title: title description: 'unit description' created_at: '2025-04-16 09:41:57' updated_at: '2025-04-16 09:41:57' properties: error: type: boolean example: false message: type: string example: 'Unit retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 title: title description: 'unit description' created_at: '2025-04-16 09:41:57' updated_at: '2025-04-16 09:41:57' items: type: object properties: id: type: integer example: 1 title: type: string example: title description: type: string example: 'unit description' created_at: type: string example: '2025-04-16 09:41:57' updated_at: type: string example: '2025-04-16 09:41:57' - description: '' type: object example: error: true message: 'Unit not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Unit not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Units not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Units not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Unit Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the tag to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/units/store: post: summary: 'Create an unit.' operationId: createAnUnit description: 'This endpoint creates an unit. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Unit created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Title',\n 'description' => 'Unit Description',\n 'created_at =>'2025-04-16',\n 'updated_at' =>'2025-04-16',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n\n \"title\": [\n \"The title field is required.\"\n ],\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the unit.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the unit.' tags: - 'Unit Management' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title of the unit.' example: Title description: type: string description: 'The description of the unit.' example: amount required: - title /api/units/update: post: summary: 'Update an unit.' operationId: updateAnUnit description: 'This endpoint updates an unit. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Unit created successfully.\",\n\"id\": 36,\n\"data\": {\n 'id' => '1',\n 'title' => 'Title',\n 'description' => 'Unit Description',\n 'created_at =>'2025-04-16',\n 'updated_at' =>'2025-04-16',\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\n \"The title id is required.\"\n ],\n \"title\": [\n \"The title field is required.\"\n ],\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the unit.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the unit.' tags: - 'Unit Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the unit.' example: '1' title: type: string description: 'The title of the unit.' example: Title description: type: string description: 'The description of the unit.' example: 'unit description' required: - id - title '/api/units/destroy/{id}': delete: summary: 'Remove the specified unit.' operationId: removeTheSpecifiedUnit description: 'This endpoint deletes a unit based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Unit deleted successfully.' id: 1 data: [] properties: error: type: boolean example: false message: type: string example: 'Unit deleted successfully.' id: type: integer example: 1 data: type: array example: [] - description: '' type: object example: error: true message: 'Unit not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Unit not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the Unit.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the Unit.' tags: - 'Unit Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer '/api/items/{id}': get: summary: 'Retrieve a list of items or a specific item.' operationId: retrieveAListOfItemsOrASpecificItem description: "This endpoint fetches item records associated with the authenticated user's workspace. You can retrieve a single item by its ID or fetch a paginated list using filters such as search terms, sorting, unit filters, and pagination controls.\n\nFilters available:\n- **search**: Filter by title, description, price, unit ID, or item ID (partial match).\n- **unit_ids**: Filter by one or more unit IDs (exact match).\n- **id**: If provided, fetches a single item record with detailed fields." parameters: - in: query name: search description: 'optional Filter items by title, description, price, unit_id, or item ID.' example: 'Water Bottle' required: false schema: type: string description: 'optional Filter items by title, description, price, unit_id, or item ID.' example: 'Water Bottle' - in: query name: sort description: 'optional Column to sort by. Defaults to "id". Available values: id, title, price, created_at, updated_at.' example: title required: false schema: type: string description: 'optional Column to sort by. Defaults to "id". Available values: id, title, price, created_at, updated_at.' example: title - in: query name: order description: 'optional Sort direction: ASC or DESC. Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional Sort direction: ASC or DESC. Defaults to "DESC".' example: ASC - in: query name: unit_ids description: 'optional Filter items by one or more unit IDs.' example: - 1 - 2 - 3 required: false schema: type: array description: 'optional Filter items by one or more unit IDs.' example: - 1 - 2 - 3 items: type: string - in: query name: limit description: 'optional Number of items to return. Default is 10.' example: 15 required: false schema: type: integer description: 'optional Number of items to return. Default is 10.' example: 15 - in: query name: offset description: 'optional Offset for paginated data. Default is 0.' example: 20 required: false schema: type: integer description: 'optional Offset for paginated data. Default is 0.' example: 20 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Items Retrieved Successfully\",\n \"total\": 2,\n \"data\": [\n {\n \"id\": 1,\n \"title\": \"Notebook\",\n \"price\": \"₹100.00\",\n \"unit_id\": 2,\n \"unit_name\": \"Piece\",\n \"description\": \"A ruled notebook\",\n \"created_at\": \"2025-05-01\",\n \"updated_at\": \"2025-05-04\"\n },\n ...\n ]\n}" tags: - 'Item Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the item to retrieve a single record. If not provided, a list will be returned.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 5 /api/items/store: post: summary: 'Create an item.' operationId: createAnItem description: 'This endpoint creates an item. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Item created successfully.\",\n\"id\": 36,\n\"data\": {\n \"id\": 1,\n\"title\": \"title\",\n\"price\" : 100,\n\"unit_id\": 1,\n\"description\" : \"description\",\n\"created_at\": \"2025-04-16 09:41:57\",\n\"updated_at\": \"2025-04-16 09:41:57\"\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\n \"The id field is required.\"\n ],\n \"title\": [\n \"The title field is required.\"\n ],\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the item.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the item.' tags: - 'Item Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the item.' example: '1' title: type: string description: 'The title of the item.' example: Title description: type: string description: 'The description of the item.' example: description price: type: string description: 'The price of the item.' example: '400' unit_id: type: string description: 'The unit_id of the item.' example: '4' required: - id - title /api/items/update: post: summary: 'Update an item.' operationId: updateAnItem description: 'This endpoint updates an item. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n\"error\": false,\n\"message\": \"Item updated successfully.\",\n\"id\": 36,\n\"data\": {\n \"id\": 1,\n\"title\": \"title\",\n\"price\" : 100,\n\"unit_id\": 1,\n\"description\" : \"description\",\n\"created_at\": \"2025-04-16 09:41:57\",\n\"updated_at\": \"2025-04-16 09:41:57\"\n }" 422: description: '' content: text/plain: schema: type: string example: "{\n \"error\": true,\n \"message\": \"Validation errors occurred\",\n \"errors\": {\n \"id\": [\n \"The id field is required.\"\n ],\n \"title\": [\n \"The title field is required.\"\n ],\n\n }\n}" 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the item.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the item.' tags: - 'Item Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: string description: 'The id of the item.' example: '1' title: type: string description: 'The title of the item.' example: Title description: type: string description: 'The description of the item.' example: description price: type: string description: 'The price of the item.' example: '400' unit_id: type: string description: 'The unit_id of the item.' example: '4' required: - id - title '/api/items/destroy/{id}': delete: summary: 'Remove the specified item.' operationId: removeTheSpecifiedItem description: 'This endpoint deletes a item based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Item deleted successfully.' id: 1 data: [] properties: error: type: boolean example: false message: type: string example: 'Item deleted successfully.' id: type: integer example: 1 data: type: array example: [] - description: '' type: object example: error: true message: 'Item not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Item not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the Item.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the Item.' tags: - 'Item Management' parameters: - in: path name: id description: 'The ID of the item to be deleted.' example: 1 required: true schema: type: integer /api/estimates-invoices: get: summary: 'List or search estimate invoices.' operationId: listOrSearchEstimateInvoices description: 'This endpoint retrieves a list of estimate invoices based on various filters. The user must be authenticated to perform this action. The request allows searching and sorting by different parameters.' parameters: - in: query name: search description: 'optional The search term to filter invoices by id or note.' example: INVC-1001 required: false schema: type: string description: 'optional The search term to filter invoices by id or note.' example: INVC-1001 - in: query name: sort description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id required: false schema: type: string description: 'optional The field to sort by. Defaults to "id". Sortable fields include: id, created_at, and updated_at.' example: id - in: query name: order description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC required: false schema: type: string description: 'optional The sort order, either "ASC" or "DESC". Defaults to "DESC".' example: ASC - in: query name: limit description: 'optional The number of items per page for pagination.' example: 10 required: false schema: type: integer description: 'optional The number of items per page for pagination.' example: 10 - in: query name: offset description: 'optional The offset for pagination.' example: 0 required: false schema: type: integer description: 'optional The offset for pagination.' example: 0 - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Estimate invoice retrieved successfully' total: 1 data: - id: 1 client: id: 2 name: 'John Doe' email: client@example.com photo: 'https://example.com/storage/photos/client.jpg' total: '₹ 1,000.00' status: Pending due_date: '2025-04-30' created_by: 'Admin User' created_at: '2025-04-15' updated_at: '2025-04-15' properties: error: type: boolean example: false message: type: string example: 'Estimate invoice retrieved successfully' total: type: integer example: 1 data: type: array example: - id: 1 client: id: 2 name: 'John Doe' email: client@example.com photo: 'https://example.com/storage/photos/client.jpg' total: '₹ 1,000.00' status: Pending due_date: '2025-04-30' created_by: 'Admin User' created_at: '2025-04-15' updated_at: '2025-04-15' items: type: object properties: id: type: integer example: 1 client: type: object properties: id: type: integer example: 2 name: type: string example: 'John Doe' email: type: string example: client@example.com photo: type: string example: 'https://example.com/storage/photos/client.jpg' total: type: string example: '₹ 1,000.00' status: type: string example: Pending due_date: type: string example: '2025-04-30' created_by: type: string example: 'Admin User' created_at: type: string example: '2025-04-15' updated_at: type: string example: '2025-04-15' - description: '' type: object example: error: true message: 'Estimate invoice not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Estimate invoice not found' total: type: integer example: 0 data: type: array example: [] - description: '' type: object example: error: true message: 'Estimate invoices not found' total: 0 data: [] properties: error: type: boolean example: true message: type: string example: 'Estimate invoices not found' total: type: integer example: 0 data: type: array example: [] tags: - 'Estimate Invoice Management' parameters: - in: path name: id description: 'Optional parameter. optional The ID of the estimate invoice to retrieve.' required: true schema: type: integer examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: 1 /api/estimates-invoices/store: post: summary: 'Store a new invoice or estimate.' operationId: storeANewInvoiceOrEstimate description: "This endpoint allows the creation of a new invoice or estimate by providing details such as client, dates, items, amount, and tax info.\nThe user must be authenticated to perform this action." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"error\": false,\n \"message\": \"Estimate/Invoice created successfully.\",\n \"data\": {\n \"id\": 1,\n \"type\": \"invoice\",\n \"client_id\": 1,\n \"from_date\": \"2024-01-01\",\n \"to_date\": \"2024-01-31\",\n \"total\": \"1000.00\",\n \"tax_amount\": \"100.00\",\n \"final_total\": \"1100.00\",\n \"status\": \"draft\",\n \"created_at\": \"2024-01-01T10:00:00.000000Z\",\n \"items\": [...]\n }\n}" 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred' errors: type: - 'The type field is required.' client_id: - 'The client field is required.' from_date: - 'The from date field is required and must be before the to date.' to_date: - 'The to date field is required and must be after the from date.' final_total: - 'The final total field is required and must be a valid currency format.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred' errors: type: object properties: type: type: array example: - 'The type field is required.' items: type: string client_id: type: array example: - 'The client field is required.' items: type: string from_date: type: array example: - 'The from date field is required and must be before the to date.' items: type: string to_date: type: array example: - 'The to date field is required and must be after the from date.' items: type: string final_total: type: array example: - 'The final total field is required and must be a valid currency format.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while creating the estimate/invoice.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while creating the estimate/invoice.' tags: - 'Estimate Invoice Management' requestBody: required: true content: application/json: schema: type: object properties: type: type: string description: 'Type of the document. Accepted values: estimate, invoice.' example: invoice client_id: type: integer description: 'The ID of the client.' example: 1 name: type: string description: 'The name/title of the estimate or invoice.' example: 'Website Development' address: type: string description: 'optional The address for the client.' example: '123 Main St.' city: type: string description: 'optional The city of the client.' example: 'New York' state: type: string description: 'optional The state of the client.' example: NY country: type: string description: 'optional The country of the client.' example: USA zip_code: type: string description: 'optional The postal code.' example: '10001' phone: type: string description: 'optional The phone number.' example: '+1234567890' note: type: string description: 'optional General note.' example: 'Handle with urgency' personal_note: type: string description: 'optional Internal note.' example: 'Discussed pricing' from_date: type: date description: 'Start date. Format: Y-m-d.' example: '2024-01-01' to_date: type: date description: 'End date. Format: Y-m-d.' example: '2024-01-31' status: type: string description: 'optional Status of the document. Accepted values for invoice: not_specified, partially_paid, fully_paid, draft, cancelled, due. For estimate: not_specified, sent, accepted, draft, declined, expired.' example: draft total: type: string description: 'Sub total amount. Format: currency.' example: '1000.00' tax_amount: type: string description: 'optional Tax amount. Format: currency.' example: '100.00' final_total: type: string description: 'Final total after taxes. Format: currency.' example: '1100.00' item_ids: type: array description: 'optional IDs of selected items.' example: - 1 - 2 items: type: string item: type: array description: 'Item IDs.' example: - 1 - 2 items: type: string quantity: type: array description: 'Quantity per item.' example: - 2 - 1 items: type: string unit: type: array description: 'optional Unit IDs for each item.' example: - 1 - 2 items: type: string rate: type: array description: 'Rate per item.' example: - '500.00' - '1000.00' items: type: string tax: type: array description: 'optional Tax ID per item.' example: - 1 - 2 items: type: string amount: type: array description: 'Total amount per item.' example: - '1000.00' - '1000.00' items: type: string required: - type - client_id - name - from_date - to_date - total - final_total - item - quantity - rate - amount /api/estimates-invoices/update: post: summary: 'Update an existing estimate or invoice.' operationId: updateAnExistingEstimateOrInvoice description: "This endpoint updates an existing estimate or invoice record with provided details including type, client, date range, financials, items, and notes.\nThe request must be authenticated." parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: type: object example: error: false message: 'Estimate/Invoice updated successfully.' data: id: 5 type: invoice client_id: 2 from_date: '2024-04-01' to_date: '2024-04-30' total: '1000.00' tax_amount: '100.00' final_total: '1100.00' properties: error: type: boolean example: false message: type: string example: 'Estimate/Invoice updated successfully.' data: type: object properties: id: type: integer example: 5 type: type: string example: invoice client_id: type: integer example: 2 from_date: type: string example: '2024-04-01' to_date: type: string example: '2024-04-30' total: type: string example: '1000.00' tax_amount: type: string example: '100.00' final_total: type: string example: '1100.00' 422: description: '' content: application/json: schema: type: object example: error: true message: 'Validation errors occurred.' errors: client_id: - 'The client field is required.' from_date: - 'The from date must be a valid date.' to_date: - 'The to date must be a valid date.' total: - 'The total format is invalid.' final_total: - 'The final total format is invalid.' properties: error: type: boolean example: true message: type: string example: 'Validation errors occurred.' errors: type: object properties: client_id: type: array example: - 'The client field is required.' items: type: string from_date: type: array example: - 'The from date must be a valid date.' items: type: string to_date: type: array example: - 'The to date must be a valid date.' items: type: string total: type: array example: - 'The total format is invalid.' items: type: string final_total: type: array example: - 'The final total format is invalid.' items: type: string 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while updating the estimate or invoice.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while updating the estimate or invoice.' tags: - 'Estimate Invoice Management' requestBody: required: true content: application/json: schema: type: object properties: id: type: integer description: 'The ID of the estimate or invoice to update.' example: 5 type: type: string description: 'The type of the document. Accepted values: estimate, invoice.' example: invoice client_id: type: integer description: 'The client ID associated with this document.' example: 2 name: type: string description: 'The name or title of the document.' example: 'Invoice April 2024' address: type: string description: 'The billing address.' example: '123 Main St' city: type: string description: 'The city name.' example: 'New York' state: type: string description: 'The state name.' example: NY country: type: string description: 'The country name.' example: USA zip_code: type: string description: 'The postal/zip code.' example: '10001' phone: type: string description: 'The phone number.' example: '+1 1234567890' note: type: string description: 'Additional notes.' example: 'Payment due within 15 days' personal_note: type: string description: 'A personal/internal note.' example: 'Send reminder after 10 days' from_date: type: date description: 'The start date for the invoice or estimate.' example: '2024-04-01' to_date: type: date description: 'The end date for the invoice or estimate.' example: '2024-04-30' status: type: string description: 'The status of the document depending on its type. For invoice: not_specified, partially_paid, fully_paid, draft, cancelled, due. For estimate: not_specified, sent, accepted, draft, declined, expired.' example: due total: type: string description: 'The total before tax.' example: '1000.00' tax_amount: type: string description: 'The tax amount.' example: '100.00' final_total: type: string description: 'The final total after tax.' example: '1100.00' item: type: array description: 'List of item IDs.' example: - 1 - 2 - 3 items: type: string quantity: type: object description: '' example: '*': '[2, 1, 3]' properties: '*': type: numeric description: 'Quantity for each item.' example: '[2, 1, 3]' unit: type: object description: '' example: '*': 0 properties: '*': type: integer description: 'Unit ID for each item.' example: 0 rate: type: object description: '' example: '*': '["500.00", "200.00", "100.00"]' properties: '*': type: string description: 'Rate for each item.' example: '["500.00", "200.00", "100.00"]' tax: type: object description: '' example: '*': 0 properties: '*': type: integer description: 'Tax ID for each item.' example: 0 amount: type: object description: '' example: '*': '["1000.00", "200.00", "300.00"]' properties: '*': type: string description: 'Calculated amount for each item.' example: '["1000.00", "200.00", "300.00"]' required: - id - type - client_id - name - from_date - to_date - total - final_total '/api/estimates-invoices/destroy/{id}': delete: summary: 'Remove the specified estimate invoice.' operationId: removeTheSpecifiedEstimateInvoice description: 'This endpoint deletes a estimate invoice based on the provided ID. The user must be authenticated to perform this action.' parameters: - in: header name: workspace-id description: '' example: 1 schema: type: string responses: 200: description: '' content: application/json: schema: oneOf: - description: '' type: object example: error: false message: 'Estimate Invoice deleted successfully.' id: 1 data: [] properties: error: type: boolean example: false message: type: string example: 'Estimate Invoice deleted successfully.' id: type: integer example: 1 data: type: array example: [] - description: '' type: object example: error: true message: 'Estimate Invoice not found.' data: [] properties: error: type: boolean example: true message: type: string example: 'Estimate Invoice not found.' data: type: array example: [] 500: description: '' content: application/json: schema: type: object example: error: true message: 'An error occurred while deleting the Estimate Invoice.' properties: error: type: boolean example: true message: type: string example: 'An error occurred while deleting the Estimate Invoice.' tags: - 'Estimate Invoice Management' parameters: - in: path name: id description: 'The ID of the todo to be deleted.' example: 1 required: true schema: type: integer tags: - name: Endpoints description: '' - name: 'User Authentication' description: '' - name: 'Profile Management' description: '' - name: 'Dashboard Management' description: '' - name: 'Project Management' description: '' - name: 'Milestone Management' description: '' - name: 'Project Comments' description: '' - name: 'Project Media' description: '' - name: 'Task Management' description: '' - name: 'Task Comments' description: '' - name: 'Task Media' description: '' - name: 'Income vs Expense' description: '' - name: 'Status Management' description: '' - name: 'Priority Management' description: '' - name: 'Tag Management' description: '' - name: 'User Management' description: '' - name: 'Client Management' description: '' - name: 'Workspace Management' description: '' - name: 'Meeting Management' description: '' - name: 'Todo Management' description: '' - name: 'Note Management' description: '' - name: 'Leave Request Management' description: '' - name: 'Notification Management' description: '' - name: 'Activity Log Management' description: '' - name: 'Role/Permission Management' description: '' - name: 'Setting Management' description: '' - name: 'Expense Management' description: '' - name: 'Payment Management' description: '' - name: 'Payment Method Management' description: '' - name: 'Tax Management' description: '' - name: 'Unit Management' description: '' - name: 'Item Management' description: '' - name: 'Estimate Invoice Management' description: '' components: securitySchemes: default: type: http scheme: bearer description: '' security: - default: []