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\": \"
\",\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\": \"
\",\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: []